首页 >web前端 >js教程 >如何根据嵌套值使用数组过滤对象数组?

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

DDD
DDD原创
2024-10-29 03:08:02276浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn