首页 > web前端 > js教程 > 正文

如何根据嵌套值使用数组过滤对象数组?

DDD
发布: 2024-10-29 03:08:02
原创
165 人浏览过

How to Filter an Array of Objects with Arrays Based on Nested Value?

使用基于嵌套值的数组过滤对象数组

问题:如何根据嵌套值过滤对象数组?

输入:

<code class="javascript">let arrayOfElements = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1},
            {"surname": 2}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 3},
            {"surname": 1}
        ]
    },
    {
        "name": "c",
        "subElements": [
            {"surname": 2},
            {"surname": 5}
        ]
    }
];</code>
登录后复制

所需输出:

<code class="javascript">let filteredArray = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 1}
        ]
    }
];</code>
登录后复制

初始尝试:

<code class="javascript">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>
登录后复制

问题:此方法返回具有所有姓氏的对象,而不是将它们修剪掉。

解决方案:

<code class="javascript">arrayOfElements.map((element) => {
    return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})</code>
登录后复制

说明:

  • 此方法使用 map() 方法迭代 arrayOfElements。
  • 对于每个元素,它将其属性分散到一个新对象。
  • 然后在 subElements 数组上使用 filter() 来仅保留那些满足条件的子元素 (surname === 1)。
  • 然后使用过滤后的 subElements 覆盖原始子元素数组。

以上是如何根据嵌套值使用数组过滤对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!