与大家分享我在工作中用到的三种数组去重的方法,亲测有效~
1.利用es6的新特性new set
var arr1 = [1,2,3,2,4,1];
function unique(arr){
return [...new Set(arr)]
}
console.log( unique(arr1) );
//返回 [1,2,3,4]
注意:Set首字母需要大写,也可以用Array.from(new Set(arr))
这种方法简单好用,不过有个缺点:new Set去重是去同样类型的重,如果有数字类型1和字符串类型1是不可以的
2.数组遍历+indexof()方法
var arr2 = [1,2,3,2,4,1];
function unique( arr ){
var brr = [];
for( var i=0;i<arr.length;i++){
if( brr.indexOf(arr[i]) == -1 ){
brr.push( arr[i] );
}
}
return brr;
}
console.log( unique(arr2) );
//返回[1,2,3,4]
3.数组的sort方法+循环遍历,判断相邻的两个元素是否相等
var arr3 = [1,2,3,2,4,1];
function unique( arr ){
arr = arr.sort();
var brr = [];
for(var i=0;i<arr.length;i++){
if( arr[i] !== arr[i-1]){
brr.push( arr[i] );
}
}
return brr;
}
console.log( unique(arr3) );
//返回[1,2,3,4]
以上方法各有利弊,小伙伴们如果还有其他更合适的方法,欢迎留言探讨~