var a = {
1: {
687: {
name:'test1'
}
}
}
var b = {
1: {
689: {
name:'test2'
}
}
}
var c = {
...a,
...b
}
console.log(c)Run Code Online (Sandbox Code Playgroud)
我期望结果是:
{
1: {
687: {
name:'test1'
},
689: {
name:'test2'
}
}
}Run Code Online (Sandbox Code Playgroud)
但它是 :
{
1: {
689: {
name:'test2'
}
}
}Run Code Online (Sandbox Code Playgroud)
我使用传播运算符错了吗?合并两个对象的最有效方法是什么?我做了一个遍历对象中每个键的函数,它可以工作,但我认为这不是写方法。
Object.assign({},a,b) 也返回相同的结果(第一个结果,我不需要)。
我遇到了一个问题:如何动态合并两个JavaScript对象的属性?
但这并不能回答我的问题。这个答案(/sf/answers/11987951/)也不是我想要的。
提前致谢。
lodash merge 实际上做了我真正需要的。
https://blog.mariusschulz.com/2015/03/30/combining-settings-objects-with-lodash-assign-or-merge
// Defined within your component
var defaultSettings = {
strictMode: true,
formatting: {
finalNewline: true,
quotes: "double"
}
};
// Provided by the developer using your component
var userSettings = {
formatting: {
quotes: "single"
}
};
var assignedSettings = _.assign({}, defaultSettings, userSettings);
// {
// strictMode: true,
// formatting: {
// quotes: "single"
// }
// }
var mergedSettings = _.merge({}, defaultSettings, userSettings);
// {
// strictMode: true,
// formatting: {
// finalNewline: true,
// quotes: "single"
// }
// }Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3924 次 |
| 最近记录: |