我想根据父键推送子对象值

样例代码:

let parent = {}
    let newobj = {}

    function setData(pid, cid, val) {
    //    let newobj = {}
        newobj[cid] = val;
        parent[pid] = newobj;
    }

    setData(1, 0, true)
    setData(1, 1, false)
    setData(0, 1, true)

    console.log(parent)


预期输出为:

{
    0: {1: true},
    1: {0: true, 1: false}
}

最佳答案

您需要重用父级的现有对象(如果存在)



let parent = {}

function setData(pid, cid, val) {
  let newobj = parent[pid] || {};
  newobj[cid] = val;
  parent[pid] = newobj;
}

setData(1, 0, true)
setData(1, 1, false)
setData(0, 1, true)

console.log(parent)







或者,如果使用es6,则可以一次扩展对象并对其进行更新



let parent = {}

function setData(pid, cid, val) {
  parent[pid] = {
            ...parent[pid],
            [cid]: val
            }
}

setData(1, 0, true)
setData(1, 1, false)
setData(0, 1, true)

console.log(parent)





(尽管这每次都会创建一个新对象)

关于javascript - 如何根据父键推送子对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50211812/

10-10 11:25