ホームページ >ウェブフロントエンド >jsチュートリアル >ネストされた値に基づいて配列を使用してオブジェクトの配列をフィルターする方法は?

ネストされた値に基づいて配列を使用してオブジェクトの配列をフィルターする方法は?

DDD
DDDオリジナル
2024-10-29 03:08:02220ブラウズ

How to Filter an Array of Objects with Arrays Based on Nested Value?

ネストされた値に基づいて配列を使用してオブジェクトの配列をフィルタリングする

質問: ネストされた値に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

入力:

<code class="javascript">let arrayOfElements = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1},
            {"surname": 2}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 3},
            {"surname": 1}
        ]
    },
    {
        "name": "c",
        "subElements": [
            {"surname": 2},
            {"surname": 5}
        ]
    }
];</code>

目的の出力:

<code class="javascript">let filteredArray = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 1}
        ]
    }
];</code>

最初の試行:

<code class="javascript">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>

問題: このアプローチでは、姓を削除するのではなく、すべての姓を含むオブジェクトが返されます。

解決策:

<code class="javascript">arrayOfElements.map((element) => {
    return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})</code>

説明:

  • このアプローチでは、map() メソッドを使用して arrayOfElements を反復処理します。
  • 要素ごとに、そのプロパティを 1 つの要素に分散します。新しいオブジェクト。
  • 次に、subElements 配列に対して filter() を使用して、条件 (姓 === 1) を満たすものだけを保持します。
  • フィルターされた subElement は、次に、元の subElements 配列。

以上がネストされた値に基づいて配列を使用してオブジェクトの配列をフィルターする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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