gpt4 book ai didi

Javascript:使用扩展运算符合并两个对象

转载 作者:数据小太阳 更新时间:2023-10-29 05:24:49 24 4
gpt4 key购买 nike

var a = {
1: {
687: {
name:'test1'
}
}
}
var b = {
1: {
689: {
name:'test2'
}
}
}
var c = {
...a,
...b
}
console.log(c)

我期待的结果是:

{
1: {
687: {
name:'test1'
},
689: {
name:'test2'
}
}
}

但是,它是:

{
1: {
689: {
name:'test2'
}
}
}

我是不是用错了传播运算符?合并两个对象的最有效方法是什么?我创建了一个函数来遍历对象中的每个键,它可以工作,但我认为这不是写入方式。

Object.assign({},a,b) 也返回相同的结果(第一个结果,我不想要)。

我完成了问题 How can I merge properties of two JavaScript objects dynamically?

但它没有回答我的问题。这个答案(https://stackoverflow.com/a/171256/1352853)也不是我想要的。

提前致谢。

最佳答案

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"
// }
// }

关于Javascript:使用扩展运算符合并两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44721749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com