数组去重是面试经常遇到的,命中率高达85%+。下给大家整理出一些应对数组去重的方案
1、使用ES6的Set去重
[JavaScript] 纯文本查看 复制代码 function distinct(arr) {
return Array.from(new Set(arr));
}
2、使用ES6的Set去重(超级简化版)
[JavaScript] 纯文本查看 复制代码 [...new Set(arr)]
3、使用splice配合两重for循环去重
[JavaScript] 纯文本查看 复制代码 function distinct(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);
j--;
}
}
}
return arr;
}
4、使用for循环配合indexOf去重
[JavaScript] 纯文本查看 复制代码 function distinct(arr) {
let newArr = [];
for(let i = 0; i < arr.length; i++) {
if(newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
5、使用for循环配合sort排序去重
[JavaScript] 纯文本查看 复制代码 function distinct(arr) {
arr = arr.sort();
let newArr = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i] !== arr[i-1]) {
newArr.push(arr[i]);
}
}
return newArr;
}
6、使用for循环配合includes去重
[JavaScript] 纯文本查看 复制代码 function distinct(arr) {
let newArr = [];
for(let i = 0; i < arr.length; i++) {
if(!newArr.includes(arr[i])) {
newArr.push(arr[i]);
}
}
return newArr;
}
7、使用filter配合indexOf去重
[JavaScript] 纯文本查看 复制代码 function distinct(arr) {
return arr.filter((item,index, arr) => arr.indexOf(item) === index);
}
|