JavaScript でプロパティごとにオブジェクトの配列から一意のオブジェクトを抽出する

PHPz
リリース: 2023-08-29 15:33:12
転載
999 人が閲覧しました

在 JavaScript 中按属性从对象数组中提取唯一对象

このチュートリアルでは、オブジェクトの配列からプロパティに基づいて一意のオブジェクトを抽出する方法を学習します。場合によっては、特定のプロパティに基づいてオブジェクトの配列からオブジェクトをフィルター処理する必要があります。

たとえば、オブジェクトを識別するキーとして ID があります。したがって、配列には単一の ID を持つ単一のオブジェクトのみが含まれていることを確認する必要があります。 2 つ以上のオブジェクトに同じ主キー値が含まれている場合、オブジェクトの一意の識別に問題が発生する可能性があります。

ここでは、特定のプロパティに基づいて配列からすべての一意のオブジェクトをフィルターするさまざまな方法を学びます。

マップと for ループの使用

JavaScript では、Map に一意のキーと値のペアを保存できます。さらに、マップのキーを使用して、O(1) の時間計算量でマップから任意の値を取得できます。したがって、オブジェクトの配列を反復処理し、キーと値のペアを Map に保存します。さらに、マップに特定のプロパティ値を持つオブジェクトが含まれているかどうかを確認しますが、そのオブジェクトを新しいオブジェクトの配列に追加することはありません。

###文法###

次の構文に従って、map を使用して配列から一意のオブジェクトを抽出できます。

リーリー

上記の構文では、マッピングを使用して一意の emp_id を持つオブジェクトを保存します。

###アルゴリズム###

ステップ 1
    - 重複した emp_id を持つ複数のオブジェクトを含むオブジェクト配列を作成します。
  • ステップ 2
  • - Map コンストラクターを使用して Map() オブジェクトを作成します。
  • ステップ 3
  • - for-of ループを使用して、「employees」配列の各オブジェクトを反復処理します。
  • ステップ 4
  • - マップの場合、キーとして emp_id を使用し、値としてオブジェクト全体を使用します。 for-of ループ内で、Map オブジェクトの set() メソッドを使用して、オブジェクトを emp_id キーの値に設定します。
  • ステップ 5
  • - マップはイテレータです。したがって、イテレータのすべての値を取得するには、values() メソッドを適用します。
  • ステップ 6
  • - スプレッド演算子を使用して、すべてのオブジェクトを iteratorValues から uniqueEmployees 配列にコピーします。
  • ステップ 7
  • - uniqueEmployees 配列には一意の emp_id を持つすべてのオブジェクトが含まれており、ユーザーはそれを反復処理してオブジェクト値を取得できます。
  • ###例### 次の例では、Map と for-of ループを使用して属性ごとに一意のオブジェクトを抽出するアルゴリズムを実装します。重複した emp_id 値を持つ 4 つの異なるオブジェクトを含む従業員の配列を作成し、上記のアルゴリズムを使用してすべての一意のオブジェクトを抽出しています。

    リーリー
  • array.filter() メソッドと Map を使用する

filter() メソッドを使用して、配列内の値をフィルタリングできます。コールバック関数をパラメータとして受け取り、コールバック関数から返されたブール値に基づいて値をフィルタリングします。

上記の例と同様に、マップを使用して属性値を保存し、マップにその値が既に含まれているかどうかを確認します。そうである場合は次に進みます。そうでない場合は、値をマップに追加して配列をフィルターします。

###文法###

ユーザーは、次の構文に従って、一意の属性値を持つすべてのオブジェクトをフィルターできます。

リーリー ###アルゴリズム###

ステップ 1

- Map() オブジェクトを使用してマップを作成します。

ステップ 2
    - filter() メソッドを使用して、配列から値をフィルターします。
  • ステップ 3
  • - ネットワークをパラメーターとして受け取るフィルター メソッドに、コールバック関数を引数として渡します。ネットワークは参照配列内のオブジェクトです。
  • ステップ 4
  • - マップに既に website_name がキーとして含まれているかどうかを確認し、コールバック関数から false を返して続行します。
  • ステップ 5
  • - マップに website_name が含まれていない場合は、website_name と object をキーと値のペアとしてマップに追加し、true を返して uniqueObjects 配列で除外します。
  • ###例### この例では、filter() メソッドを使用して、配列の website_name によってすべての Web サイト オブジェクトをフィルターします。出力では、filter() メソッドが一意の website_name を含む 2 つのオブジェクトのみを返すことがわかります。

    リーリー
  • このチュートリアルでは、特定の属性値を通じて一意のオブジェクトを抽出する 2 つの方法を説明します。どちらのメソッドでもマップを使用していますが、オブジェクトの配列を反復するために異なるイテレータ メソッドを使用しています。ユーザーは、for-of ループまたは filter() メソッドを使用して配列を反復処理できます。

以上がJavaScript でプロパティごとにオブジェクトの配列から一意のオブジェクトを抽出するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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