主题
js八种数组去重的方法
第一种 new Set
javascript
var fun = function (arr) {
return [...new Set(arr)];
};第二种 new Map
javascript
var fun = function (arr) {
let map = new Map();
let res = [];
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], i);
res.push(arr[i]);
}
}
return arr;
};第三种 两层for循环+splice
javascript
var fun = function (arr) {
let len = arr.length;
let res = [];
for (let i = 0; i < len; i++) {
for (let j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
len--;
j--;
i--;
}
}
}
return arr;
};第四种 indexOf
javascript
var fun = function (arr) {
let res = [];
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) == -1) {
res.push(arr[i]);
}
}
return res;
};第五种 includes
javascript
var fun = function (arr) {
let res = [];
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) {
res.push(arr[i]);
}
}
return res;
};第六种 filter
javascript
var fun = function (arr) {
return arr.filter((item, index) => {
return arr.indexOf(item) == index;
});
};第七种 sort
javascript
var fun = function (arr) {
arr = arr.sort();
let res = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i - 1]) {
res.push(arr[i]);
}
}
return res;
};第八种 reduce + includes
javascript
var fun = function (arr) {
let res = arr.reduce((prev, curr) => {
if (!prev.includes(curr)) {
prev.push(curr);
}
return prev;
}, []);
return res;
};