Javascript 如何合并具有相同键的嵌套对象
我很难使用Object.assign将嵌套对象与可能相同的键合并 以代码为例Javascript 如何合并具有相同键的嵌套对象,javascript,object,Javascript,Object,我很难使用Object.assign将嵌套对象与可能相同的键合并 以代码为例 // Initial structure let state = { pageIndex: 1, allResults: { queries: {} } } 代码 我得到了什么 state = { pageindex: 1, allResults: { queries: { 1: { res
// Initial structure
let state = {
pageIndex: 1,
allResults: {
queries: {}
}
}
代码
我得到了什么
state = {
pageindex: 1,
allResults: {
queries: {
1: {
res: 'hi'
},
2: {
res: 'hi'
},
hello: {},
hi: {}
}
}
}
我所期望的
let state = {
pageIndex: 1,
allResults: {
queries: {
hi: {
1: {
res: 'h'
},
2: {
res: 'h'
}
},
hello: {
2: {
res: 'h'
}
}
}
}
}
所以,我这样做并没有真正起作用,我也不知道如何得到预期的结果
提前感谢您可以使用嵌套的Object.assign
const assign=查询,第=>{
const obj={[page]:{res:'hi'}
state.allResults.querys=Object.assign
{},
state.allResults.querys,
{[query]:Object.assignstate.allResults.querys[query]|{},obj}
;
}
let state={pageIndex:1,allResults:{querys:{};
分配'hi',state.pageIndex;
分配'hi',state.pageIndex+1;
分配'hello',state.pageIndex+1;
控制台日志状态
.作为控制台包装器{max height:100%!important;top:0;}我认为这对您可能有用:
const assign = (query, page) => {
const obj = {
[page]: {
res: 'hi'
}
}
let _obj = Object.assign(
{},
state.allResults.queries[query] || {},
obj
);
state.allResults.queries = Object.assign(
{},
state.allResults.queries,
{ [query]: _obj }
)
}
首先,我创建了将分配给子查询对象的普通对象。然后我将它合并到一个现有的对象中,如果不是,{}一个空对象
之后,我将其合并到查询对象中
希望能对您有所帮助。这将把发送给分配函数hi或hello的查询键的所需子键与新值一起分配给它们以前的值
state.allResults.queries[query] = Object.assign(
{},
state.allResults.queries[query] || {},
obj
)
您想让我们猜您的预期结果是什么,对吗?编辑您的问题,以显示您的预期结果和实际得到的结果。@connexo我在代码中添加了预期结果
state.allResults.queries[query] = Object.assign(
{},
state.allResults.queries[query] || {},
obj
)