使用基于嵌套值的数组过滤对象数组
您正在尝试根据对象中的嵌套值过滤对象数组对象。目标是创建一个新数组,其中仅包含具有嵌套属性的特定值的对象。
为了实现此目的,您使用了以下公式:
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中文网其他相关文章!