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

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

DDD
发布: 2024-10-30 23:46:30
原创
794 人浏览过

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

使用嵌套值数组过滤对象数组

根据嵌套值过滤对象数组可能是一个常见的挑战。为了解决这个问题,让我们检查提供的小提琴:

输入数组:

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

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