【发布时间】:2020-07-23 00:39:10
【问题描述】:
假设我有两个对象:
var obj1 = {cars: 'ford', fruit: 'peach', other: ['bar']}
var obj2 = {cars: 'ferrari', info: 'foo', other: ['baz']}
现在我想合并这两个对象和任何冲突的属性。预期结果:
{cars: ['ford', 'ferrari'], fruit: 'peach', info: 'foo', other: ['bar', 'baz']}
但是,使用对象传播
{...obj1, ...obj2}
返回
{cars: 'ferrari', fruit: 'peach', info: 'foo', other: ['baz']}
有没有办法合并两个对象并将冲突的属性合并到数组中而不是覆盖?
注意:我需要纯 JS
【问题讨论】:
-
您必须手动循环遍历对象的项目并创建新对象
-
@rzwnahmd 你能提供一个函数来做到这一点吗?
-
有一个答案显示了一种纯 JavaScript 的方法。 Lodash 库确实使代码更简洁。
-
@VLAZ 抱歉,我需要使用纯 javascript 来执行此操作...
-
您描述的数据结构是一个多图,以防您想围绕该主题进行更多搜索。
标签: javascript node.js merge javascript-objects