最新手的写法
let array = [1,5,2,3,4,2,3,1,3,4]
let i, j;
let unique = (arr) => {
let array2 = arr
for(i = 0; i < array2.length; i++){
for(j = i + 1; j < array2.length; j++){
if(array2[i] === array2[j]){
//踩坑:移除数组需要知道,如果使用delete来移除数组的某个元素,只会移除这个元素的下标,没有去除元素,length也就没有变化。
array2.splice(j,1)
//踩坑:每当删除一个元素时,length都会-1一次,可能会影响下标为j的元素与后面的比较,网上称这种情况为:数组塌陷
j--
}
}
}
return array2;
}
unique(array)
缺点:如果array很长,很容易造成内存常驻,占用不必要的内存空间。
使用set
let array = [1,5,2,3,4,2,3,1,3,4]
function unique(arr){
return Array.from(new Set(arr))
}
unique(array)
缺点:API 太新,旧浏览器不支持。
【参考资料】 7种方法实现数组去重 Map and Set(映射和集合)