使用巢狀值陣列過濾物件陣列
根據巢狀值過濾物件陣列可能是常見的挑戰。為了解決這個問題,讓我們檢查提供的小提琴:
輸入陣列:
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中文網其他相關文章!