js数组添加属性失败

我想为res.content下面的子数组添加一个count的属性,但是最后打印res.content却没有count属性,请问大神,如何可以添加上count属性?
image.png

阅读 2.2k
1 个回答

你最后修改的对象其实和res.Content没什么关系。
relation = { ...relation, count: counts.count }
这句相当于重新申请了一段内存,赋值给relation这个变量,修改的并不是res.Content内的relation.
可改为relation.count = counts.count


function transform(list1, list2) {
  let countInfo = {} // { GraphTypeName: { Id: count } }
  list2.forEach(item => {
    countInfo[item.GraphTypeName] = countInfo[item.GraphTypeName] || {}
    let rList = item.RelationTypeProjectList
    rList.forEach(r => {
      countInfo[item.GraphTypeName][r.Id] = r.count
    })
  })
  
  let changeList = []
  list1.forEach(item => {
    // 这里保存的是引用
    changeList.push(...item.ChildGraphicTypeList)
  })
  changeList.forEach(item => {
    let name = item.GraphTypeName
    let rList = item.RelationTypeProjectList
    rList.forEach(r => {
      r.count = countInfo[name][r.Id]
    })
  })
}

调用:

let list1 = [
{

note:'关系',
code:'345',
ChildGraphicTypeList:[{
    id:123,
    GraphTypeName:'第一个',
    RelationTypeProjectList:[{
        Id:'234',
        note:'说明'
    }]
}]
}
]
let list2 = [{

id:123,
GraphTypeName:'第一个',
RelationTypeProjectList:[{
    Id:'234',
    note:'说明',
    count:222
}]
}]
transform(list1, list2)
console.log(JSON.stringify(list1))

输出

[
    {
        "note":"关系",
        "code":"345",
        "ChildGraphicTypeList":[
            {
                "id":123,
                "GraphTypeName":"第一个",
                "RelationTypeProjectList":[
                    {
                        "Id":"234",
                        "note":"说明",
                        "count":222
                    }
                ]
            }
        ]
    }
]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题