Javascript 合并包含数组的对象

Javascript 合并包含数组的对象,javascript,lodash,Javascript,Lodash,如何使用lodash合并包含数组和其他字段的两个对象 比如说, obj1 = { name: "abc", hobbies: ["reading","cricket"] } obj2 = { name: "abc2", hobbies: ["reading","hockey"] } _.merge(obj1, obj2) // output { name: "abc2", hobbies: ["reading","hockey"] } 这将在将

如何使用lodash合并包含数组和其他字段的两个对象

比如说,

obj1 = {
    name: "abc",
    hobbies: ["reading","cricket"]
}
obj2 = {
    name: "abc2",
    hobbies: ["reading","hockey"]
}
_.merge(obj1, obj2)

// output
{
    name: "abc2",
    hobbies: ["reading","hockey"]
}
这将在将obj1合并到obj2后返回一个对象,但不合并嗜好。

没有
\uuz.merge
函数,因此我假设您正在使用。如果是这种情况,您可以使用
回调
参数执行您想要的操作

var obj1 = { name: 'abc', hobbies: ['reading', 'cricket'] };
var obj2 = { name: 'def', hobbies: ['reading', 'hockey'] };

var output = _.merge(obj1, obj2, function(a,b) {
    return _.isArray(a) ? _.union(a,b) : undefined;
} );
console.log( output );

// output

{ name: 'def', hobbies: ['reading', 'cricket', 'hockey'] }
编辑
正在工作。

因此,您希望用
obj2
覆盖
name
,但不覆盖
嗜好
?我希望嗜好合并(联合)。您的输出与
obj2
相同。我对你想要的结果有点困惑。名字是正确的。我希望我的业余爱好是阅读、板球、曲棍球。merge不是subline.js的一部分。你从哪里得到的?