首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新Javascript中对象数组的嵌套对象?

如何更新Javascript中对象数组的嵌套对象?
EN

Stack Overflow用户
提问于 2019-06-17 23:41:26
回答 1查看 1.5K关注 0票数 0
代码语言:javascript
复制
const testArr = [
    { id: 'aaa', 
      children: [ 
           { id: 'aaa-1', 
             children: [
                { id: 'aaa-1-1' }   
             ] 
           }, 
           { id: 'aaa-2'}
       ] 
    },
    { id: 'bbb' },
]

我有嵌套的对象数组到managa我的redux商店。我想向对象添加新属性。让我们将children添加到id: aaa-2中,对象如下:

代码语言:javascript
复制
const testArr = [
    { id: 'aaa', 
      children: [ 
           { id: 'aaa-1', 
             children: [
                { id: 'aaa-1-1' }   
             ] 
           }, 
           { id: 'aaa-2',
             children: [{ someNewKey: 'someNewValue' }]
           }

       ] 
    },
    { id: 'bbb' },
]

有没有一种方法可以用特定的键更新嵌套级别的对象:值对?我试着发挥作用,但效果不太好

我试过//,但是当尝试内部更新时,它不能正常工作

代码语言:javascript
复制
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
            }
        }
    })
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-18 04:38:52

自己解决

代码语言:javascript
复制
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]
        }
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56640078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档