JavaScript中如何合并嵌套数组里display属性为true的对象元素?
解决嵌套数组对象的元素合并问题
没问题,我来帮你搞定这个需求!其实思路很简单,分几步就能完成:
- 提取对象中的所有数组:先把原对象里的所有数组值取出来,不用管它们的键名(比如
first、second)。 - 筛选符合条件的元素:对每个数组,只保留
display属性为true的对象。 - 合并所有筛选后的结果:把这些筛选好的元素整合成一个新数组。
直接上代码,结合你的示例对象来看:
// 你的示例对象 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
相关产品推荐
相关产品推荐

