ホームページ  >  記事  >  ウェブフロントエンド  >  別の配列との一致に基づいてオブジェクトの配列をフィルタリングする方法は?

別の配列との一致に基づいてオブジェクトの配列をフィルタリングする方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 08:39:02397ブラウズ

How to Filter an Array of Objects Based on Matches with Another Array?

オブジェクトの配列を別のオブジェクトの配列でフィルタリングする

問題:

オブジェクトの 2 番目の配列との一致に基づいてオブジェクトの配列をフィルタリングします。たとえば、次の配列があるとします。

<code class="js">myArray = [
  { userid: "100", projectid: "10", rowid: "0" },
  { userid: "101", projectid: "11", rowid: "1" },
  { userid: "102", projectid: "12", rowid: "2" },
  { userid: "103", projectid: "13", rowid: "3" },
  { userid: "101", projectid: "10", rowid: "4" },
];
myFilter = [
  { userid: "101", projectid: "11" },
  { userid: "102", projectid: "12" },
  { userid: "103", projectid: "11" },
];</code>

userid プロパティと projectid プロパティが myFilter のプロパティと一致するオブジェクトのみを含めるように myArray をフィルタリングする必要があります。期待される結果は次のとおりです:

<code class="js">myArrayFiltered = [
  { userid: "101", projectid: "11", rowid: "1" },
  { userid: "102", projectid: "12", rowid: "2" },
];</code>

解決策:

配列をフィルターするには、フィルターといくつかの配列メソッドを利用できます:

<code class="js">const myArrayFiltered = myArray.filter((el) => {
  return myFilter.some((f) => {
    return f.userid === el.userid && f.projectid === el.projectid;
  });
});</code>

説明:

  • フィルター メソッドは myArray を反復処理し、引数として指定された条件を満たすオブジェクトのみを含む新しい配列を作成します。
  • 条件内で使用される some メソッドは、myFilter 内の要素が myArray 内の現在の要素の userid および projectid プロパティに一致するかどうかを確認します。
  • 一致が見つかった場合、some メソッドは true を返し、現在の要素がフィルタリングされた配列に含める必要があります。

以上が別の配列との一致に基づいてオブジェクトの配列をフィルタリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。