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

DDD
リリース: 2024-10-29 03:08:02
オリジナル
165 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!