本文深入探討了處理物件陣列時面臨的常見問題:刪除重複條目。我們的目標是深入了解實現此任務的最佳方法。
問題陳述
考慮以下對象:
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中文網其他相關文章!