如何将父对象中的子对象合并到单个变量对象中
如何将父对象中的多个子对象合并为一个新对象?
当然可以实现,以下是几种简洁的JavaScript解决方案:
原始输入
let a = { "11111": {"1": "test", "11": "test"}, "22222": {"2": "test", "22": "test"} };
期望输出
{ "1": "test", "11": "test", "2": "test", "22": "test" }
方法1:使用Object.values() + Object.assign()
const mergedObj = Object.assign({}, ...Object.values(a));
Object.values(a)提取父对象a的所有子对象,返回数组:[{"1": "test", "11": "test"}, {"2": "test", "22": "test"}]- 展开运算符
...将数组中的每个子对象作为独立参数传入Object.assign(),最终合并到空对象{}中
方法2:使用数组reduce() + 展开运算符
const mergedObj = Object.values(a).reduce((acc, curr) => ({...acc, ...curr}), {});
- 用
reduce遍历子对象数组,每次将当前子对象curr的属性展开到累加器acc中,初始累加器为{} - 这种写法偏向函数式风格,逻辑直观
注意事项
如果多个子对象存在相同键名,后面的子对象属性会覆盖前面的(比如若子对象都有键"1",最终值会是最后一个子对象里"1"对应的内容)
内容的提问来源于stack exchange,提问作者Alex Dalen
相关产品推荐
相关产品推荐

