在 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 对象数组的去重。