ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で配列から重複オブジェクトを効率的に削除するにはどうすればよいですか?

JavaScript で配列から重複オブジェクトを効率的に削除するにはどうすればよいですか?

DDD
リリース: 2024-12-21 19:53:12
オリジナル
218 人が閲覧しました

How Can I Efficiently Remove Duplicate Objects from an Array in JavaScript?

オブジェクトの配列からの重複の削除: 詳細な調査

この記事では、オブジェクトの配列を操作するときに直面する一般的な問題、つまり重複エントリの削除について詳しく説明します。私たちの目的は、このタスクを達成するための最適な方法を深く理解することです。

問題ステートメント

次のオブジェクトを考えてみましょう:

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))
  );
ログイン後にコピー

説明

提供されるソリューションは以下を利用します概念:

  • filter: 指定された条件を満たす配列要素を選択します。
  • findIndex: の最初の要素のインデックスを返します。条件を満たす配列。
  • プロパティ比較: 2 つのオブジェクトが指定されたプロパティのセットに対して同一の値を持つかどうかを判断します。

これらの戦略を採用することで、配列から重複オブジェクトを効果的に削除し、各要素が一意であることを保証できます。

以上がJavaScript で配列から重複オブジェクトを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート