js数组去重有很多的方法,这里记录下来几种方法:
1. 利用set去重
ES6 提供了Set (集合) 这种数据结构,可以保证数组中的元素没有重复的
参考代码如下:
function unique(arr) {
// 将set再转换为数组
return Array.from(new Set(arr));
}
// 可以简化为
[...new Set(arr)]
2.双重for循环,然后splice去重
function unique(arr) {
for (let i = 0; i < arr.length; i++) {
for(let j = i + 1; j < arr.length; j++) {
if(arr[i] == arr[j]) {
arr.splice(j, 1);
}
}
}
return arr;
}
3.新建一个数组,利用indexOf(或includes)去重
function unique(arr) {
if(!Array.isArray(arr)) {
return
}
let res = [];
for(let i = 0; i < arr.length; i++) {
if(!res.includes(arr[i])){
res.push(arr[i]);
}
}
return res;
}
4.reduce + includes
对3进行一些改写
function unique(arr) {
return arr.reduce((pre, cur) => pre.includes(cur) ? pre : [...pre,cur], []);
}