最近面试遇见的一个问题es6的去重有哪些?然后我能想到的是这些,但好像回答的不是很让面试官满意,不知道还有哪些
Set
Set+ 扩展运算符
[...new Set(arr)];
Set+Array.from()
function methods1(arr) {
const set1 = new Set(params)
return Array.from(set1)
}
indexOf
Array.prototype.unique = function () {
var arr = [];
var len = this.length;
for (var i = 0; i < len; i++) {
if (arr.indexOf(this[i]) === -1) arr.push(this[i]);
}
return arr;
};
const arr = [1, 2, 1, 1, "1"];
console.log(arr.unique());
Map
function unique(arr) {
const map = new Map();
const array = [];
for (let i = 0; i < arr.length; i++) {
if (map.has(arr[i])) {
map.set(arr[i], true);
} else {
map.set(arr[i], false);
array.push(arr[i]);
}
}
return array;
}
filter简化循环+ indexof
function unique2(array) {
var res = array.filter((item, index, array) => {
return array.indexOf(item) === index;
});
return res;
}