面试问题:es6的去重有哪些?

70 阅读1分钟

最近面试遇见的一个问题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;
}