この記事では、オブジェクトの配列を操作するときに直面する一般的な問題、つまり重複エントリの削除について詳しく説明します。私たちの目的は、このタスクを達成するための最適な方法を深く理解することです。
問題ステートメント
次のオブジェクトを考えてみましょう:
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 )) );
Genericアプローチ
より汎用性の高いソリューションについては、次のことを検討してください。コード:
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)) );
説明
提供されるソリューションは以下を利用します概念:
これらの戦略を採用することで、配列から重複オブジェクトを効果的に削除し、各要素が一意であることを保証できます。
以上がJavaScript で配列から重複オブジェクトを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。