js对象去重:如何从js对象数组中删除重复项

分类:知识百科 日期: 点击:0

在 JavaScript 中,有时候我们会遇到一个对象数组,其中可能会有重复的项,此时,我们就需要去重,以便获得有效的数据。本文将介绍几种常用的去重方法,可以帮助我们快速有效地实现 js 对象数组的去重。

第一种方法是使用 ES6 的 Set 对象。Set 对象是一种新的数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。我们可以使用 Set 对象将 js 对象数组中的重复项去除,代码如下:

let arr = [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}, {name: 'Tom', age: 18}];
let set = new Set(arr);
let uniqueArr = [...set];
console.log(uniqueArr);
// 输出:[{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]

第二种方法是使用 reduce 方法,reduce 方法可以接收一个函数作为参数,该函数接收四个参数,分别是前一个值、当前值、索引和原数组,我们可以使用 reduce 方法把重复的项过滤掉,代码如下:

let arr = [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}, {name: 'Tom', age: 18}];
let uniqueArr = arr.reduce((prev, cur) => {
    let flag = prev.findIndex(item => item.name === cur.name);
    if (flag === -1) {
        prev.push(cur);
    }
    return prev;
}, []);
console.log(uniqueArr);
// 输出:[{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]

第三种方法是使用 indexOf 方法,indexOf 方法可以查找指定元素在数组中的位置,如果存在,则返回该元素的索引,如果不存在,则返回 -1,我们可以使用 indexOf 方法来查找重复的项,将其过滤掉,代码如下:

let arr = [{name: 'Tom', age: 18}, {name: 'Jack', age: 20}, {name: 'Tom', age: 18}];
let uniqueArr = arr.filter((item, index, array) => {
    return array.indexOf(item) === index;
});
console.log(uniqueArr);
// 输出:[{name: 'Tom', age: 18}, {name: 'Jack', age: 20}]

以上就是 js 对象数组去重的几种常用方法,通过这些方法,我们可以快速有效地实现 js 对象数组的去重。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。