首页 >web前端 >js教程 >如何在 JavaScript 中有效地从数组中删除重复的对象?

如何在 JavaScript 中有效地从数组中删除重复的对象?

Patricia Arquette
Patricia Arquette原创
2024-12-19 06:10:54671浏览

How to Efficiently Remove Duplicate Objects from an Array in JavaScript?

如何从数组中删除重复的对象

使用对象数组时,通常需要删除重复项。 ES6 过滤方法为此任务提供了一个优雅的解决方案。

ES6 Magic

obj.arr = obj.arr.filter((value, index, self ) =>
索引 === self.findIndex((t) =>; (

t.place === value.place && t.name === value.name

))
)

此代码将数组中的每个元素与所有后续元素进行比较。如果找到重复项,则会将其过滤掉。

通用解决方案

更通用的方法:

const uniqueArray = obj. arr.filter((值, 索引) => {
const _value = JSON.stringify(value);
返回索引 === obj.arr.findIndex(obj =>; {

return JSON.stringify(obj) === _value;

});
});

该策略将每个对象序列化为字符串并比较字符串以识别

基于属性的比较

使用属性策略:

const getUniqueItemsByProperties = (items, propNames) =>
items.filter((item, index, array) =>

index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNames))

);

此方法可以灵活地指定确定唯一性的属性.

包装属性策略

允许数组和单个属性名称:

const getUniqueItemsByProperties = (items, propNames) =>; {
const propNamesArray = Array.from(propNames);

return items.filter((item, index, array) =>

index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNamesArray))

);
};

解释

这里的关键思想是使用识别重复项的过滤方法。唯一性标准由比较逻辑确定,可以根据对象属性或序列化策略进行自定义。

以上是如何在 JavaScript 中有效地从数组中删除重复的对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn