合并包含数组的对象
Merge objects containing array
如何使用 lodash 合并包含数组和其他字段的两个对象?
例如,
obj1 = {
name: "abc",
hobbies: ["reading","cricket"]
}
obj2 = {
name: "abc2",
hobbies: ["reading","hockey"]
}
_.merge(obj1, obj2)
// output
{
name: "abc2",
hobbies: ["reading","hockey"]
}
这个 returns 将 obj1 合并到 obj2 后的一个对象,但没有合并爱好。
Underscore.js doesn't have a _.merge
function so I'm assuming you're using Lo-Dash。如果是这样的话,你可以使用 callback
参数来做你想做的事情
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'] }
编辑
工作JSFiddle。
如何使用 lodash 合并包含数组和其他字段的两个对象?
例如,
obj1 = {
name: "abc",
hobbies: ["reading","cricket"]
}
obj2 = {
name: "abc2",
hobbies: ["reading","hockey"]
}
_.merge(obj1, obj2)
// output
{
name: "abc2",
hobbies: ["reading","hockey"]
}
这个 returns 将 obj1 合并到 obj2 后的一个对象,但没有合并爱好。
Underscore.js doesn't have a _.merge
function so I'm assuming you're using Lo-Dash。如果是这样的话,你可以使用 callback
参数来做你想做的事情
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'] }
编辑
工作JSFiddle。