首页 > web前端 > js教程 > 如何根据特定值过滤对象中的嵌套数组?

如何根据特定值过滤对象中的嵌套数组?

Mary-Kate Olsen
发布: 2024-10-29 10:14:29
原创
339 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板