Javascript 如何合并具有相同键的嵌套对象

Javascript 如何合并具有相同键的嵌套对象,javascript,object,Javascript,Object,我很难使用Object.assign将嵌套对象与可能相同的键合并 以代码为例 // Initial structure let state = { pageIndex: 1, allResults: { queries: {} } } 代码 我得到了什么 state = { pageindex: 1, allResults: { queries: { 1: { res

我很难使用Object.assign将嵌套对象与可能相同的键合并

以代码为例

// 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
)