オブジェクトの配列を操作する場合、多くの場合、重複を削除する必要があります。 ES6 フィルター メソッドは、このタスクに洗練されたソリューションを提供します。
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((項目, インデックス, 配列) =>
index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNamesArray))
);
};
ここでの重要なアイデアは、重複を識別するためのフィルター方法。一意性の基準は比較ロジックによって決定され、オブジェクトのプロパティまたはシリアル化戦略に基づいてカスタマイズできます。
以上がJavaScript で配列から重複オブジェクトを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。