Skip to content

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;
};