js-数组去重总结

3次阅读

共计 1282 个字符,预计需要花费 4 分钟才能阅读完成。

1、es6 set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr)=> [...new Set(arr)];
unique(arr);//[1, 2, 3, 4, 6, 7]

2、es6 map

思路为 map 对象里没有数组元素的属性,就在 map 对象里添加数组元素的属性,并赋值为 1,然后在过滤。

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr)=> {let seen = new Map();
    return arr.filter((item) => {return !seen.has(item) && seen.set(item,1);
    });
};
unique(arr);

3、for 双重循环

通过判断第二层循环,去重的数组中是否含有该元素,如果有就退出第二层循环,如果没有 j ==result.length 就相等,然后把对应的元素添加到最后的数组里面。

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let result = [];
for(var i = 0 ; i < arr.length; i++) {for(var j = 0 ; j < result.length ; j++) {if( arr[i] === result[j]){break;};
    };
    if(j == result.length){result.push(arr[i]);
    };
};
console.log(result);

4、indexOf

indexOf() 方法可返回某个指定的元素在数组中首次出现的位置。如果没有就返回 -1。

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {let result = [];
    for(var i = 0 ; i < arr.length ; i++){if(result.indexOf(arr[i]) == -1){result.push(arr[i])
        }
    };
    return result;
};
unique(arr);

5、indexOf filter

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {return arr.filter((item,index) => {return arr.indexOf(item) === index;
    })
};
unique(arr);

6、排序后去重

先数组排序,然后判断是否是第一个元素并且前一个元素是否和后一个元素相同,不同就加进新数组

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {let arrNew = arr.sort((a,b)=>a-b);
    let seen,result = [];
    for(var i = 0 ; i < arrNew.length ;i++){if(!seen || seen != arrNew[i]){result.push(arrNew[i]);
        };
        seen = arrNew[i]
    };
    return result;
};
unique(arr);

正文完
 0

JS数组去重总结

3次阅读

共计 659 个字符,预计需要花费 2 分钟才能阅读完成。

数组去重,一般会在面试的时候才会碰到,要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的 10 种,面试官很有可能对你刮目相看。
在实际项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然运用到的概率较低,但还是需要了解一下,以防面试的时候被问到。
数组去重的方法:
一、利用 ES6 Set 去重(ES6 中最常用)

如果不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉重复“{}”的方法。
二、利用 for 嵌套 for,然后 splice 去重(ES5 中最常用)
​​
双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。
三、利用 indexOf 去重
新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则 push 进数组。
四、利用 sort()
​​
利用 sort() 排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
五、利用对象的属性不能相同的特点进行去重
​​
六、利用 includes
​​
七、利用 hasOwnProperty
​​
利用 hasOwnProperty 判断是否存在对象属性
八、利用 filter
​​
九、利用递归去重
十、利用 Map 数据结构去重
​​
创建一个空 Map 数据结构,遍历需要去重的数组,把数组的每一个元素作为 key 存到 Map 中。由于 Map 中不会出现相同的 key 值,所以最终得到的就是去重后的结果。
十一、利用 reduce+includes
喜欢的可以点击关注小编哦~ 每天更新~

正文完
 0