数组去重操作几种方法

1. ES6  Set

  let a = [1,1,2,2,3,4,5,6,7,7,7];
  Array.from(new Set(a));   //[1, 2, 3, 4, 5, 6, 7]
  [...new Set(a)];  //[1, 2, 3, 4, 5, 6, 7]

 

 

2. IndexOf 判断

  let result = [];
  a.map(val => {
    if(result.indexOf(val) < 0){

      result.push(val);
    }
  })

 

3.sort 排序后 两两相邻的做比较

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    arr = arr.sort()
    var arrry= [arr[0]];
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] !== arr[i-1]) {
            arrry.push(arr[i]);
        }
    }
    return arrry;
}
unique(a)

4. includes 去重 类似 indexOf

  let result = [];
  a.map(val => {
    if(result.includes(val) < 0){
      result.push(val);
    }
  });

   console.log(result) // [1,2,3,4,5,6,7]

5. map 去重

  function unique(arr) {
    let map = new Map();
    let array = new Array();  // 数组用于返回结果
    for (let i = 0; i < arr.length; i++) {
      if(map .has(arr[i])) {  // 如果有该key值
        map .set(arr[i], true); 
      } else { 
        map .set(arr[i], false);   // 如果没有该key值
        array .push(arr[i]);
      }
    } 
    return array ;
  }
  unique(a);

其他包括很多 filter  lastIndexOf 等等大同小异

posted @ 2020-05-12 17:49  Mr_R  阅读(205)  评论(0编辑  收藏  举报