IFE任务练习笔记(五)
文章目录
这里记录的是在练习百度的2016IFE任务时的笔记,因为是边学边记所以也比较零散,仅供自己平日记录。
- js 数组去重
方法一:双重循环去重 — 耗时 性能差
12345678910111213141516Array.prototype.unique = function(){var newArray = [this[0]];for(var i=1;i<this.length;i++){var flag= false;for(var j=0;j<newArray.length;j++){if(this[i] == newArray[j]){flag = true;break;}}if(!flag){newArray.push(this[i]);}}return newArray;}方法二: 用 forEach()及 indexOf()实现
123456789Array.prototype.unique = function(){var newArray=[];this.forEach(function(index){if(newArray.indexOf(index) == -1){newArray.push(index)}})return newArray;}
比方法一快
- 方法三: 排序遍历去重12345678910Array.prototype.unique = function(){this.sort();var newArray =[];for(var i=0;i<this.length;i++){if(this[i]!==newArray[newArray.length-1]){//只和新数组的最后一个元素比较newArray.push(this[i]);}}return newArray;}
去重后的数组,与数字相同的数字字符无法区分,比如’1’和1
方法四: 对象键值对法
1234567Array.prototype.unique = function(){var obj={};for(var i=0;i<this.length;i++){obj[this[i]] = this[i];}return Object.keys(obj);}方法五:ES6
12345678function unique (arr) {const seen = new Map()return arr.filter((a) => !seen.has(a) && seen.set(a, 1))}function unique (arr) {return Array.from(new Set(arr))}
- 元素的所有类名: ele.classList
是否含有某个类名: ele.contains(className);