const testArr = [
{ id: 'aaa',
children: [
{ id: 'aaa-1',
children: [
{ id: 'aaa-1-1' }
]
},
{ id: 'aaa-2'}
]
},
{ id: 'bbb' },
]
我要嵌套对象数组来管理我的redux
存储。我想向对象添加新属性。让我们将children
添加到id: aaa-2
,该对象将在下面:
const testArr = [
{ id: 'aaa',
children: [
{ id: 'aaa-1',
children: [
{ id: 'aaa-1-1' }
]
},
{ id: 'aaa-2',
children: [{ someNewKey: 'someNewValue' }]
}
]
},
{ id: 'bbb' },
]
有没有一种方法可以使用特定的key:value对来更新对象的嵌套级别?我尝试使函数起作用,但是效果不佳
我尝试了// ,但是在尝试进行内部更新时无法正常工作
const updateDeep = (arr, id, push) => {
return arr.map(el => {
if (el.id === id) {
return Object.assign({}, el, { children: push })
}
else {
if (el.children) {
return updateDeep(el.children, id, push)
} else {
return el
}
}
})
}
答案 0 :(得分:0)
自己解决
function updateDeep(array, id, newObj) {
array.some((o, i) => {
var temp;
if (o.id === id) {
o.children = [...(o.children ? o.children : []), newObj]
}
if (temp = updateDeep(o.children || [], id, newObj)) {
o.children = [...(o.children ? o.children : []), newObj]
}
});
}