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

JavaScript中如何合并嵌套数组里display属性为true的对象元素?

解决嵌套数组对象的元素合并问题

没问题,我来帮你搞定这个需求!其实思路很简单,分几步就能完成:

  1. 提取对象中的所有数组:先把原对象里的所有数组值取出来,不用管它们的键名(比如first、second)。
  2. 筛选符合条件的元素:对每个数组,只保留display属性为true的对象。
  3. 合并所有筛选后的结果:把这些筛选好的元素整合成一个新数组。

直接上代码,结合你的示例对象来看:

// 你的示例对象
const data = {
  "first": [
    { "name": "John", "surname": "Doe", "display": true },
    { "name": "Jane", "surname": "Doe", "display": false }
  ],
  "second": [
    { "name": "Sarah", "surname": "Doe", "display": true }
  ]
};

// 处理逻辑
const result = Object.values(data)
  .flatMap(arr => arr.filter(item => item.display === true));

console.log(result);

代码解释:

  • Object.values(data):把原对象的所有值(也就是first和second对应的数组)提取出来,得到一个数组的数组:[[...], [...]]。
  • flatMap(arr => arr.filter(...)):flatMap相当于先对每个数组做map操作,再把结果扁平化一层。这里我们对每个数组用filter筛选出display为true的元素,然后flatMap自动把多个筛选后的数组合并成一个大数组。

运行这段代码后,输出就是你想要的结果:

[
  { "name": "John", "surname": "Doe", "display": true },
  { "name": "Sarah", "surname": "Doe", "display": true }
]

如果之后你的对象里新增了其他数组属性(比如third、fourth),这段代码也能自动适配,不用修改逻辑,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:37:42