首頁 > web前端 > js教程 > 如何根據特定值過濾物件中的嵌套數組?

如何根據特定值過濾物件中的嵌套數組?

Mary-Kate Olsen
發布: 2024-10-29 10:14:29
原創
318 人瀏覽過

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

使用基於巢狀值的陣列過濾物件陣列

您正在嘗試根據物件中的巢狀值來篩選物件陣列物件。目標是建立一個新數組,其中僅包含具有嵌套屬性的特定值的物件。

為了實現此目的,您使用了以下公式:

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)}
})
登入後複製

在此改進的公式中:

  • map 函數迭代arrayOfElements 數組中的每個元素。
  • 對於每個元素,它都會建立一個新對象,其中包含原始元素的屬性和過濾後的 subElements 數組。
  • 過濾函數應用於 subElements 數組,以刪除任何不符合過濾條件的子元素,在本例中為 subElement.surname === 1。
  • 展開運算子 (...) 是用於建立一個新對象,該物件將原始元素的屬性與篩選後的 subElements 陣列結合。

此改進的公式將傳回一個數組,其中僅包含至少一個具有姓氏的子元素的物件property 等於 1,每個物件只會包含匹配的子元素。

以上是如何根據特定值過濾物件中的嵌套數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板