PHP前端开发

js怎么去掉数组重复的对象

百变鹏仔 3天前 #JavaScript
文章标签 数组
如何在 javascript 中去除数组中的重复对象?set 数据结构:创建 set,利用其不存储重复值的特点。reduce() 方法:使用累加器函数逐个检查元素,将不重复元素放入累加器。filter() 和 indexof() 方法:过滤索引与数组中第一个索引相同的元素,去除重复。lodash 库:使用 uniqby 方法,基于指定属性去除重复对象。

如何在 JavaScript 中去除数组中的重复对象

JavaScript 数组中包含对象时,我们需要对对象进行去重操作。让我们一步一步深入了解如何在 JavaScript 中实现此目标。

1. 使用 Set 数据结构

Set 数据结构在 JavaScript 中是一个内置的对象,它不会存储重复值。我们可以利用它来去除数组中的重复对象:

const originalArray = [{ name: 'John' }, { name: 'Jane' }, { name: 'John' }, { name: 'Mary' }];const uniqueObjects = [...new Set(originalArray)];console.log(uniqueObjects);// 输出: [{ name: 'John' }, { name: 'Jane' }, { name: 'Mary' }]

2. 使用 reduce() 方法

reduce() 方法允许我们使用一个累加器函数将数组元素归并为一个单一的值。我们可以使用它来构建一个不含重复对象的数组:

const uniqueObjects = originalArray.reduce((acc, curr) => {  const found = acc.find(obj => obj.name === curr.name);  if (!found) acc.push(curr);  return acc;}, []);console.log(uniqueObjects);// 输出: [{ name: 'John' }, { name: 'Jane' }, { name: 'Mary' }]

3. 使用 filter() 和 indexOf() 方法

filter() 方法允许我们基于一个条件函数过滤数组元素。indexOf() 方法返回给定元素在数组中的第一个索引,如果不存在则返回 -1。我们可以使用它们来实现对象去重:

const uniqueObjects = originalArray.filter((obj, i) => originalArray.indexOf(obj) === i);console.log(uniqueObjects);// 输出: [{ name: 'John' }, { name: 'Jane' }, { name: 'Mary' }]

4. 使用 Lodash

Lodash 是一个功能强大的 JavaScript 实用程序库。它提供了一个叫 uniqBy 的方法,可以基于一个给定的属性来去除数组中的重复对象:

import { uniqBy } from 'lodash';const uniqueObjects = uniqBy(originalArray, 'name');console.log(uniqueObjects);// 输出: [{ name: 'John' }, { name: 'Jane' }, { name: 'Mary' }]