与大家分享我在工作中用到的三种数组去重的方法,亲测有效~
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]
以上方法各有利弊,小伙伴们如果还有其他更合适的方法,欢迎留言探讨~