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

如何筛选嵌套数组含特定字符串的JavaScript多维数组对象

筛选嵌套数组中符合条件的对象

问题说明

需要筛选大型多维数组,保留那些嵌套数组c中至少存在一个对象的键d等于"d3.1"的外层对象,尝试过.some和.filter但未成功实现。

原始数组

const arr = [
        {a:"a1",b:"b1",c:[{d:"d1.1",e:"e1.1"},{d:"d1.2",e:"e1.2"}]},
        {a:"a2",b:"b2",c:[{d:"d2.1",e:"e2.1"},{d:"d2.2",e:"e2.2"}]},
        {a:"a3",b:"b3",c:[{d:"d3.1",e:"e3.1"},{d:"d3.2",e:"e3.2"}]},
        {a:"a4",b:"b4",c:[{d:"d4.1",e:"e4.1"},{d:"d4.2",e:"e4.2"}]},
        {a:"a1",b:"b1",c:[{d:"d1.1",e:"e1.1"},{d:"d3.1",e:"e1.2"}]},
        {a:"a5",b:"b5",c:[{d:"d3.1",e:"e3.1"},{d:"d3.2",e:"e3.2"}]}
    ]

期望输出

[ 
       {a:"a3",b:"b3",c:[{d:"d3.1",e:"e3.1"},{d:"d3.2",e:"e3.2"}]},
       {a:"a1",b:"b1",c:[{d:"d1.1",e:"e1.1"},{d:"d3.1",e:"e1.2"}]},
       {a:"a5",b:"b5",c:[{d:"d3.1",e:"e3.1"},{d:"d3.2",e:"e3.2"}]}
    ]

解决方案

直接组合使用.filter和.some即可实现需求,核心逻辑如下:

  • 用.filter遍历外层数组,筛选出符合条件的对象
  • 对每个外层对象,用.some检查其c数组中是否存在d === "d3.1"的对象

实现代码

const filteredArr = arr.filter(item => {
  return item.c.some(obj => obj.d === "d3.1");
});

console.log(filteredArr);

代码说明

  • arr.filter(...):遍历外层数组,仅保留返回值为true的元素
  • item.c.some(...):检查当前外层对象的c数组,只要有一个对象的d属性等于"d3.1",就返回true,该外层对象会被保留到结果中

运行这段代码后,输出结果与期望完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:40:35