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

DDD
リリース: 2024-10-30 23:46:30
オリジナル
862 人が閲覧しました

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

ネストされた値配列によるオブジェクトの配列のフィルタリング

ネストされた値に基づいてオブジェクトの配列をフィルタリングすることは、一般的な課題となる場合があります。これに対処するために、提供されたフィドルを調べてみましょう:

入力配列:

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

必要な出力:

let filteredArray = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 1}
        ]
    }
];
ログイン後にコピー

元のフィルタリング手法:

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

この数式は配列をフィルタリングしますが、姓を削除するのではなく、すべての姓を含むオブジェクトを返します。

改良フィルタリング メソッド:

arrayOfElements.map((element) => {
  return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})
ログイン後にコピー

このメソッドは、スプレッド演算子 (...) を利用して、配列内の各要素に新しいオブジェクトを作成します。新しいオブジェクト内では、subElements プロパティがフィルター処理され、目的の姓の値 (surname === 1) を持つプロパティのみが含まれます。

このアプローチを使用すると、必要なデータにアクセスしてフィルタリングするためのマップ関数。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート