使用嵌套值数组过滤对象数组
根据嵌套值过滤对象数组可能是一个常见的挑战。为了解决这个问题,让我们检查提供的小提琴:
输入数组:
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中文网其他相关文章!