You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据对象属性过滤嵌套对象数组?附代码示例

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

给定如下嵌套对象数组,需要根据对象的name属性进行过滤,比如筛选出所有name === 'sam'的对象:

const arrNestedObj=[
          {
            "id":"1",
            0:{
              "name":"john",
              "age":"10"
            },
            1:{
              "name":"sam",
              "age":"20"
            }
          },{ 
            "id":"2",
            0:{
              "name":"sam",
              "age":"15"
            },
          }
        ]

预期输出:

[
  {
    "name":"sam",
    "age":"20"
  },
  {
     "name":"sam",
     "age":"15"
   }
]

实现方案

可以通过遍历外层数组、提取目标子对象并过滤的方式实现,代码如下:

const result = arrNestedObj.flatMap(item => {
  // 提取当前外层对象中包含name的子对象(排除id这类非对象属性)
  const subObjects = Object.values(item).filter(val => typeof val === 'object' && val.name);
  // 过滤出name为sam的对象
  return subObjects.filter(obj => obj.name === 'sam');
});

console.log(result);

思路说明

  1. 使用flatMap遍历外层数组,同时将内层结果自动扁平化合并为一个数组
  2. 对每个外层对象,用Object.values(item)获取所有属性值,筛选出包含name的子对象
  3. 二次过滤子对象,只保留name === 'sam'的项
  4. 最终所有符合条件的对象会被收集到同一个数组中

内容的提问来源于stack exchange,提问作者prathm_76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:54:25