JavaScript 配列内のネストされたオブジェクトをフィルタリングして、一致する要素のみを維持する方法

Barbara Streisand
リリース: 2024-10-28 16:10:08
オリジナル
759 人が閲覧しました

How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?

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

JavaScript では、値に基づいてオブジェクトの配列をフィルタリングする必要があるシナリオに遭遇することがあります。ネストされたプロパティの。これを実現するには、強力なフィルタリング手法を活用できます。

質問で示された例を考えてみましょう。ここでの目標は、ネストされた "subElements" 配列内の特定の姓の値に基づいて要素の配列をフィルタリングすることです。入力配列は次のように定義されます。

<code class="js">let arrayOfElements = [
    {
       "name": "a",
       "subElements": [
          {"surname": 1},
          {"surname": 2}
       ]
    },
    {
       "name": "b",
       "subElements": [
          {"surname": 3},
          {"surname": 1}
       ]
    },
    {
       "name": "c",
       "subElements": [
          {"surname": 2},
          {"surname": 5}
       ]
    }
];</code>
ログイン後にコピー

この配列をフィルタリングして、「surname」が 1 に設定されたオブジェクトを含む「subElements」配列を持つ要素のみを取得するには、「」の組み合わせを使用できます。 filter" メソッドと "some" メソッド:

<code class="js">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>
ログイン後にコピー

ただし、このアプローチの問題は、フィルター条件に一致しないものも含め、すべての "subElement" を持つオブジェクトが返されることです。これを解決するには、スプレッド演算子とともに「マップ」関数を使用します。

<code class="js">filteredArray = arrayOfElements.map((element) => {
  return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})</code>
ログイン後にコピー

ここでは、スプレッド演算子 (つまり、「...element」) を使用して、新しいオブジェクト ベースのオブジェクトを作成します。元の「要素」に対して、その「subElements」プロパティをフィルタリングされた結果でオーバーライドします。このアプローチにより、元の配列の構造を維持しながら、不要な「サブ要素」を除外できます。結果の「filteredArray」には、「姓」基準に基づいてフィルタリングされた「subElement」を持つ目的のオブジェクトが含まれます:

<code class="js">[
    {
        "name": "a",
        "subElements": [
           {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
           {"surname": 1}
        ]
    }
]</code>
ログイン後にコピー

以上がJavaScript 配列内のネストされたオブジェクトをフィルタリングして、一致する要素のみを維持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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