首頁 >web前端 >js教程 >如何根據巢狀值使用陣列過濾物件數組?

如何根據巢狀值使用陣列過濾物件數組?

DDD
DDD原創
2024-10-29 03:08:02218瀏覽

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() 方法迭代使用map(Elements 。
  • 對於每個元素,它將其屬性分散到一個新物件。
  • 然後在 subElements 陣列上使用 filter() 來只保留那些滿足條件的子元素 (surname === 1)。
  • 然後使用過濾後的 subElements 覆寫原始子元素數組。

以上是如何根據巢狀值使用陣列過濾物件數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn