ホームページ >ウェブフロントエンド >jsチュートリアル >特定の値に基づいてオブジェクト内の入れ子になった配列をフィルターする方法

特定の値に基づいてオブジェクト内の入れ子になった配列をフィルターする方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 10:14:29325ブラウズ

How to Filter Nested Arrays in Objects Based on a Specific Value?

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

オブジェクト内のネストされた値に基づいてオブジェクトの配列をフィルタリングしようとしていますオブジェクト。目標は、ネストされたプロパティの特定の値を持つオブジェクトのみを含む新しい配列を作成することです。

これを実現するには、次の式を使用しました。

let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));

この式元の配列から、姓プロパティが 1 に等しいサブ要素を少なくとも 1 つ持つオブジェクトをフィルタリングします。ただし、出力は期待したものとは異なります。フィルター条件に一致しないサブ要素を削除する代わりに、一致しないものを含むすべてのサブ要素を持つオブジェクトを返します。

フィルター処理を改善するには、マッピング関数を使用できます。フィルター関数の代わりに。これにより、元の配列の各要素を変換して新しい配列を作成できるようになります。変換された要素には、フィルター条件に一致するサブ要素のみが含まれます。

マッピング関数を使用した改良された数式は次のとおりです:

let filteredArray = arrayOfElements.map((element) => {
  return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})

この改良された数式では:

  • map 関数は、arrayOfElements 配列内の各要素を反復処理します。
  • 要素ごとに、元の要素のプロパティとフィルター処理された subElements 配列を含む新しいオブジェクトを作成します。
  • フィルター関数が subElements 配列に適用され、フィルター条件に一致しないサブ要素が削除されます。この場合、subElement.surname === 1 です。
  • スプレッド演算子 (...) は次のとおりです。元の要素のプロパティとフィルター処理された subElements 配列を組み合わせた新しいオブジェクトを作成するために使用されます。

この改良された数式は、姓を持つサブ要素を少なくとも 1 つ持つオブジェクトのみを含む配列を返します。プロパティは 1 に等しく、各オブジェクトには一致するサブ要素のみが含まれます。

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

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