美文网首页
js高效数组去重

js高效数组去重

作者: 张奥博 | 来源:发表于2019-12-08 19:46 被阅读0次

js性能最好的两种数组去重方式,第一种为ES6的new Set()方式。

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

new Set之后的数据之后,为一个set结构的类数组数据。



需要同样使用ES6的Array.from方法转换成真实数组。
但是这种方法,无法处理数组中的对象重复问题,例如这样的数据:

let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},   
];

这时需要使用ES5的reduce方法实现数组去重。

arr.reduce(function(prev,cur,index,arr){
...
}, init);

arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
最终实现方法如下:

let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},   
];
let obj = {};
person = person.reduce((prev,cur) => {
    if(obj[cur.id] == undefined){
        obj[cur.id] = true && prev.push(cur);
    }
    return prev;
},[])
console.log(person);

初始化一个空数组,此时prev的值便为[],去上面声明的空对象obj中查找是否存在当前元素cur的id,当然是不存在的。之后便设置obj检查。



并且向计算对象中push当前对象cur。最后返回。

相关文章

  • js高效数组去重

    js性能最好的两种数组去重方式,第一种为ES6的new Set()方式。 new Set之后的数据之后,为一个se...

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

网友评论

      本文标题:js高效数组去重

      本文链接:https://www.haomeiwen.com/subject/bkamgctx.html