ホームページ > 記事 > ウェブフロントエンド > ネストされた値の配列に基づいてオブジェクトの配列をフィルタリングする方法
ネストされた値配列によるオブジェクトの配列のフィルタリング
ネストされた値に基づいてオブジェクトの配列をフィルタリングすることは、一般的な課題となる場合があります。これに対処するために、提供されたフィドルを調べてみましょう:
入力配列:
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 サイトの他の関連記事を参照してください。