Javascript 将对象添加到深度嵌套的对象
假设我有一个如下所示的对象:Javascript 将对象添加到深度嵌套的对象,javascript,ecmascript-6,Javascript,Ecmascript 6,假设我有一个如下所示的对象: const state = { meta: { attrs: [ 'dude' ], data: { foo: 'bar', stuff: [ 'x', 'y', ] }, }, } 我想将一个对象作为子对象添加到data属性中,创建以下内容: const state = { meta: { attrs: [ 'dude' ], data: {
const state = {
meta: {
attrs: [ 'dude' ],
data: {
foo: 'bar',
stuff: [
'x',
'y',
]
},
},
}
我想将一个对象作为子对象添加到data
属性中,创建以下内容:
const state = {
meta: {
attrs: [ 'dude' ],
data: {
foo: 'bar',
stuff: [
'x',
'y',
],
hello: 'world',
},
},
}
注意,在数据
对象中添加了作为子对象的hello:“world”
:
使用Object.assign
我知道我可以通过以下方式完成任务:
const hello = {
hello: 'world',
}
const data = Object.assign(
{},
state.meta.data,
hello,
)
const meta = Object.assign(
{},
state.meta,
{
data,
},
)
const updatedState = Object.assign(
{},
state,
{
meta,
},
)
是否可以使用较少的对象来完成此任务。分配调用
Object.assign(state.meta.data,{hello:"world"});
console.log(state);
您正在克隆树的每个对象,这是不必要的,或者可以使用JSON完成:
var cloned=JSON.parse(JSON.stringify(state));
Object.assign(cloned,{hello:"world"});
您正在克隆树的每个对象,这是不必要的,或者可以使用JSON完成:
var cloned=JSON.parse(JSON.stringify(state));
Object.assign(cloned,{hello:"world"});
您可以使用扩展运算符语法以及
const state={
元:{
属性:[“都德”],
数据:{
福:“酒吧”,
材料:[
“x”,
“y”,
]
},
},
}
风险值数据={
…状态,元:{
…state.meta,数据:{
…state.meta.data,您好:'世界'
}
}
}
console.log(data)
您可以使用扩展运算符语法以及
const state={
元:{
属性:[“都德”],
数据:{
福:“酒吧”,
材料:[
“x”,
“y”,
]
},
},
}
风险值数据={
…状态,元:{
…state.meta,数据:{
…state.meta.data,您好:'世界'
}
}
}
console.log(data)
state.meta.data.hello='world'
?我想尝试不改变对象,而是返回一个新的state.meta.data.hello='world'
?我想尝试不改变对象,而是返回一个新的one@andrewli我不是舒尔OP想要的。下面的人做他想做的事expects@andrewli我不是舒尔OP想要的。下面的人做他期望的事