我具有如下的json结构
[{“名称”:“ minpur”,“孩子”:[{ “ name”:“ ppp1”, “儿童”:[{ “ name”:“ feeder”, “儿童”:[{ “ name”:“ rmu16”, “儿童”:[{ “ name”:“ invt16”, “儿童”:[{ “ aname”:“ inv 01”, “值”:300 },{ “ aname”:“ inv 03”, “值”:500 }] }] }] }]}]}]
我想添加子对象的值并推送到相应的父对象 像下面一样
[{“ name”:“ minpur”,“ value”:800,“ children”:[{“ name”:“ ppp1”, “值”:800,“子级”:[{“名称”:“馈线”,“值”:800, “儿童”:[{ “ name”:“ rmu16”, “值”:800, “儿童”:[{ “ name”:“ invt16”, “值”:800, “儿童”:[{ “ aname”:“ inv 01”, “值”:300 },{ “ aname”:“ inv 03”, “值”:500 }] }]}]}]}]}]
答案 0 :(得分:1)
您可以创建一个递归函数来迭代子级,并根据其子级添加值,等等。
注意:示例中的value
属性出现在children
属性之后。
const fn = arr => arr.map(o => {
if(!o.children) return o
const children = fn(o.children)
const value = (o.value || 0) + children.reduce((r, { value }) => r + value, 0)
return {
...o,
value,
children
}
})
const data = [{"name":"minpur","children":[{"name":"ppp1","children":[{"name":"feeder","children":[{"name":"rmu16","children":[{"name":"invt16","children":[{"aname":"inv 01","value":300},{"aname":"inv 03","value":500}]}]}]}]}]}]
const result = fn(data)
console.log(result)