数组去重的方法


1.双重for循环去重 

  将数组中的每一项与它后面的每一项进行比较,没有重复就添加进新的空数组
  var arr = [3, 5, 2, 6, 8, 5, 7, 2];
  var newArray = [];
  for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j]) {
        j=++i;
      }
    }
      newArray.push(arr[i]);
  }

2.indexOf 索引查找法

  声明一个老数组和一个新数组,看老数组的每一项是否存在于新数组中,不存在就添加进新
  数组。
  let arr = [3, 5, 2, 5, 7, 23, 5, 7];
  let newArr = [];
  arr.forEach( (val,index) => {
    if (newArr.indexOf(val)== -1) {
      newArr.push(val)
    }
  })

3. 空对象记录重复的值

  let arr = [3, 5, 2, 5, 7, 23, 5, 7];

  let newArr = []

  let obj = {}

  arr.forEach((val) => {

    if (!obj[val]) {

      obj[val] = true

      newArr.push(val)

    } 

  })

4. filter过滤

  let arr = [3, 5, 2, 5, 7, 23, 5, 7];

  let r = arr.filter( (val,index,self)=>{

    return self.indexOf(val) == index 

  })  

ES6数组去重方法

5.set方法
  声明一个有重复值的数组,通过set构造函数将数组转换成没有重复值的对象,再将对象转成数组
  let arr = [3, 5, 2, 5, 7, 23, 5, 7];
  let obj = new Set(arr)

  let newArr = Array.from(obj)

6.拓展运算符 ... 

  将数组转为用逗号分隔的参数序列,具有合并复制数组等功效
  let arr = [3, 5, 2, 6, 5, 7];
  let newArr = [...new Set(arr)];

原文地址:https://www.cnblogs.com/surui/p/8997451.html