摘要:最基本的去重方法思路定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。利用将结构转换成数组拓展运算符内部使用循环方法思路方法将传入的数组或非数组值与原数组合并组成一个新的数组并返回。
1.最基本的去重方法
思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
function unique(arr){var res = [arr[0]];
for(var i=1;i
var repeat = false;
for(var j=0;j
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
2.先排序在去重
思路:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组
function unique(arr){var arr2 = arr.sort();
var res = [arr2[0]];
for(var i=1;i
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
3.利用对象的属性去重(推荐)
思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复
function unique(arr){var res =[];
var json = {};
for(var i=0;i
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}
4.利用下标查询
function unique(arr){
var newArr = [arr[0]];
for(var i=1;iif(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } return newArr; }
5.利用es6
Set数据结构,它类似于数组,其成员的值都是唯一的。 利用Array.from将Set结构转换成数组
function dedupe(array){ return Array.from(new Set(array)); }
dedupe([1,1,2,3]) //[1,2,3] 拓展运算符(...)内部使用for...of循环
let arr = [1,2,3,3]; let resultarr = [...new Set(arr)];
console.log(resultarr); //[1,2,3]
6.concat()方法
思路:concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回。该方法会产生一个新的数组。
function concatArr(arr1, arr2){
var arr = arr1.concat(arr2);
arr = unique1(arr);//再引用上面的任意一个去重方法
return arr;
}
7.Array.prototype.push.apply()
思路:该方法优点是不会产生一个新的数组。
var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a,
b);
//a=[1,2,3,4,5,6] //等效于:a.push.apply(a, b); //也等效于[].push.apply(a,
b);
function concatArray(arr1,arr2){
Array.prototype.push.apply(arr1, arr2);
arr1 = unique1(arr1);
return arr1;
}
8.arr.filter()
var arr = [0,0,1,"a",1,2,"b","a","a"]; var res = arr.filter(function(ele,index,array){ return index === array.indexOf(ele); }); document.write(res);
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/113560.html
摘要:数组去重看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。还有就是方法返回的数组也是排序后的数组,某些情况下可能不符合要求。 JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素是否相等,如果相等,就使用spli...
阅读 2264·2021-10-09 09:41
阅读 1727·2019-08-30 15:53
阅读 965·2019-08-30 15:52
阅读 3414·2019-08-30 11:26
阅读 744·2019-08-29 16:09
阅读 3380·2019-08-29 13:25
阅读 2217·2019-08-26 16:45
阅读 1908·2019-08-26 11:51