JS 数组去重

2020-06-07  本文已影响0人  Spidd

只想写四个最简单的。

indexOf

Array.prototype.distinct1 = function () {
  return this.filter(function (element, index, self) {
    console.log(self.indexOf(element), index);
    return self.indexOf(element) === index;
  });
}

set

Array.prototype.distinct2 = function () {
  let set = new Set(this);
  return [...set];
}

利用对象的特性

Array.prototype.distinct3 = function () {
    let result = [];
    let obj = {};
    for (let x of this) {
        if (!obj[x]) {
            obj[x] = x;
            result.push(x);
        }
    }
    return result;
}

遍历 (不会产生新的数组)

Array.prototype.distinct4 = function () {
  let arr = this;
  let i = 0;
  //对数组进行去重
  for (i = 0; i < arr.length; ++i) {
    if (arr[i] === arr[i + 1]) {
      arr.splice(i, 1);
      //一旦相邻两个元素相等,外层循环的初始值从0开始
      i = -1;
    }
  }
  return arr;
}
上一篇 下一篇

猜你喜欢

热点阅读