最新手的写法
let array = [1,5,2,3,4,2,3,1,3,4]let i, j;let unique = (arr) => {let array2 = arrfor(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(映射和集合)
