一行代码实现数组去重(ES6)

Posted lguow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一行代码实现数组去重(ES6)相关的知识,希望对你有一定的参考价值。

  1. ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如:

     let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
     let set = new Set(array);
     console.log(set);
     // => Set {1, 2, 3, 4, 5}
    
  2. ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到html DOM Node List,以及ES6中新增的SetMap等可遍历对象,如:

     let set = new Set();
     set.add(1).add(2).add(3);
     let array = Array.from(set);
     console.log(array);
     // => [1, 2, 3]
    

于是,现在我们可以用一行代码实现数组去重了:

let array = Array.from(new Set([1, 1, 1, 2, 3, 2, 4]));
console.log(array);
// => [1, 2, 3, 4]

附:ES5实现数组去重

var array = [1, ‘1‘, 1, 2, 3, 2, 4];
var tmpObj = {};
var result = [];
array.forEach(function(a) {
  var key = (typeof a) + a;
  if (!tmpObj[key]) {
    tmpObj[key] = true;
    result.push(a);
  }
});
console.log(result);
// => [1, "1", 2, 3, 4]

以上是关于一行代码实现数组去重(ES6)的主要内容,如果未能解决你的问题,请参考以下文章

ES6 set和map数据结构对对象数组去重简单实现

ES6 - 一条代码实现数组去重

ES6使用Set实现数组去重

VUE ES6 new Set实现数组去重

记一次面试一直出现的题——数组去重

使用ES6的reduce函数,根据key去重