ホームページ  >  記事  >  ウェブフロントエンド  >  別の配列内の一致するプロパティに基づいてオブジェクトの配列をフィルターするにはどうすればよいですか?

別の配列内の一致するプロパティに基づいてオブジェクトの配列をフィルターするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 00:34:28310ブラウズ

How can I filter an array of objects based on matching properties in another array?

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

この問題には、オブジェクトの配列 (myArray) を使用してオブジェクトの配列 (myArray) をフィルタリングすることが含まれます。 myFilter)。目的は、userid と projectid に基づいて myFilter の対応する要素に一致する myArray の要素のみを含む新しい配列 (myArrayFiltered) を作成することです。

次の例を考えてみましょう:

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"
  }
];

期待される結果は次のとおりです:

myArrayFiltered = [
  {
    userid: "101",
    projectid: "11",
    rowid: "1"
  },
  {
    userid: "102",
    projectid: "12",
    rowid: "2"
  }
];

このタスクを達成するには、フィルターといくつかの配列メソッドを使用できます。これらのメソッドは最新のブラウザで広く利用でき、ポリフィルは古いブラウザ用に存在します。

実装には、filter メソッドを使用した myArray のフィルタリングが含まれます。myFilter の各要素は、myArray の要素と比較するために使用されます。次に、 some メソッドを使用して、myArray 内の現在の要素の userid および projectid プロパティと、myFilter 内の対応する要素との間に少なくとも 1 つの一致があるかどうかを確認します。一致するものがあれば、現在の要素がフィルタリングされた結果に含まれます。

このアプローチを示すコード スニペットの例を次に示します。

<code class="javascript">const 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" }];
const myFilter = [{ userid: "101", projectid: "11" }, { userid: "102", projectid: "12" }, { userid: "103",  projectid: "11"}];

const myArrayFiltered = myArray.filter((el) => {
  return myFilter.some((f) => {
    return f.userid === el.userid && f.projectid === el.projectid;
  });
});

console.log(myArrayFiltered);</code>

このコードは、期待される結果を出力します。 myFilter.

で指定された基準に一致する myArray のオブジェクトのみを含むフィルターされた配列。

以上が別の配列内の一致するプロパティに基づいてオブジェクトの配列をフィルターするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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