You need to enable JavaScript to run this app. JavaScript:将存储多组对象数组的对象合并为单个对象数组的方法
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:将存储多组对象数组的对象合并为单个对象数组的方法

你之前尝试的Lodash方法失效是有明确原因的:union的设计目标是合并含基础值的数组、做引用级去重,和当前展平嵌套数组的需求不匹配;join本身就是将数组元素拼接为字符串的方法,完全不具备数组合并能力,自然达不到效果。

原生JS实现(无需第三方依赖)

  • 现代环境最简写法:
const obj2 = Object.values(obj).flat();

执行逻辑:Object.values(obj)会遍历目标对象,把每个键对应的数组值收集为二维数组,结构和你示例中的[arr0, arr1]一致;flat()默认按1层深度展平嵌套数组,最终输出的就是你需要的一维对象数组。
因为你的示例对象键是可排序的数字字符串,JS引擎遍历这类键时会按数值升序返回,所以最终顺序和你期望的obj2结构完全一致,不会出现内容错位。

  • 旧环境兼容写法(不支持flat的场景):
const obj2 = Object.values(obj).reduce((acc, cur) => acc.concat(cur), []);

执行逻辑:以空数组为初始累加器,把每个子数组依次拼接到结果中,达到和flat完全一致的效果。

Lodash 正确实现方式

如果项目已经引入了Lodash,直接用展平类方法即可,不用自己写兼容逻辑:

const obj2 = _.flatten(_.values(obj));

这里要避开之前踩的坑:不要用union,它在合并时会对对象做引用级去重,如果你后续有重复内容的场景反而会误删元素;_.flatten仅做1层嵌套展平,完全匹配你当前的结构要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 18:06:04