2018-05-06 | Javascript | UNLOCK

数组去重

数组去重

ES6去重

  1. set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目,返回的是一个对象
  2. Array.from可以把类数组对象、可迭代对象转化为数组。
  3. 缺点:不兼容低版本浏览器
1
2
3
Array.prototype.killWrong1 = function(){
return Array.from(new Set(this));
};

常规去重

  1. 构建一个新的数组存放结果
  2. for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
  3. 若结果数组中没有该元素,则存到结果数组中
  4. 缺点:效率不高
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array.prototype.killWrong2 = function(){
let tmp = [this[0]];
for(let i=1; i<this.length-1; i++){
let flag = false;
for(let j=0; j<tmp.length; j++){
if(this[i] === tmp[j]){
flag = true;
break;
}
}
if(!flag){
tmp.push(this[i]);
}
}
return tmp;
};

排序去重

  1. 先将原数组进行排序
  2. 检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置
  3. 如果不相同,则将该元素存入结果数组中
  4. 缺点:需要改变数组顺序
1
2
3
4
5
6
7
8
9
10
Array.prototype.killWrong2 = function(){
this.sort();
let tmp = [this[0]];
for(let i=1; i<this.length; i++){
if(this[i] !== tmp[tmp.length-1]){
tmp.push(this[i]);
}
}
return tmp;
};

请针对 Disqus 开启代理