使用基於巢狀值的陣列過濾物件陣列
您正在嘗試根據物件中的巢狀值來篩選物件陣列物件。目標是建立一個新數組,其中僅包含具有嵌套屬性的特定值的物件。
為了實現此目的,您使用了以下公式:
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
此公式從原始數組中過濾掉至少有一個 surname 屬性等於 1 的子元素的物件。但是,輸出並不完全符合您的預期。它不會刪除與篩選條件不匹配的子元素,而是傳回包含所有子元素的對象,包括那些不匹配的子元素。
為了改進過濾,可以使用映射函數而不是過濾功能。這將允許您透過轉換原始數組中的每個元素來建立一個新數組。轉換後的元素將僅包含符合過濾條件的子元素。
這是使用映射函數改進的公式:
let filteredArray = arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })
在此改進的公式中:
此改進的公式將傳回一個數組,其中僅包含至少一個具有姓氏的子元素的物件property 等於 1,每個物件只會包含匹配的子元素。
以上是如何根據特定值過濾物件中的嵌套數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!