本文深入探讨了处理对象数组时面临的常见问题:删除重复条目。我们的目标是深入了解实现此任务的最佳方法。
问题陈述
考虑以下对象:
obj = {}; obj.arr = new Array(); obj.arr.push({place: "here", name: "stuff"}); obj.arr.push({place: "there", name: "morestuff"}); obj.arr.push({place: "there", name: "morestuff"});
我们的目标是从 obj.arr 中删除重复的对象,使其仅包含唯一的对象
ES6 Magic
利用 ES6 的强大功能,我们可以使用单行解决方案:
obj.arr = obj.arr.filter((value, index, self) => index === self.findIndex((t) => ( t.place === value.place && t.name === value.name )) );
通用方法
要获得更通用的解决方案,请考虑以下方法代码:
const uniqueArray = obj.arr.filter((value, index) => { const _value = JSON.stringify(value); return index === obj.arr.findIndex(obj => { return JSON.stringify(obj) === _value; }); });
属性策略
另一种方法是比较对象的属性:
const isPropValuesEqual = (subject, target, propNames) => propNames.every(propName => subject[propName] === target[propName]); const getUniqueItemsByProperties = (items, propNames) => items.filter((item, index, array) => index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNames)) );
解释
提供的解决方案利用以下内容Concepts:
通过采用这些策略,我们可以有效地从数组中删除重复的对象,确保每个元素都是唯一的。
以上是如何在 JavaScript 中有效地从数组中删除重复的对象?的详细内容。更多信息请关注PHP中文网其他相关文章!