【问题标题】:How to add the values of the children object and push it to the corresponding parent [closed]如何添加子对象的值并将其推送到相应的父对象[关闭]
【发布时间】:2019-07-09 10:40:38
【问题描述】:
我有一个json结构如下
[{ “姓名”:“minpur”,“孩子”:[{
“名称”:“ppp1”,
“孩子们”: [{
“名称”:“馈线”,
“孩子们”: [{
“名称”:“rmu16”,
“孩子们”: [{
“名称”:“invt16”,
“孩子们”: [{
"aname": "inv 01",
“价值”:300
}, {
"aname": "inv 03",
“价值”:500
}]
}]
}]
}] }] }]
我想添加子对象的值并推送到相应的父对象
如下所示
[{ "name": "minpur", "value": 800, "children": [{ "name": "ppp1",
“价值”:800,“孩子”:[{“名称”:“喂食器”,“价值”:800,
“孩子们”: [{
“名称”:“rmu16”,
“价值”:800,
“孩子们”: [{
“名称”:“invt16”,
“价值”:800,
“孩子们”: [{
"aname": "inv 01",
“价值”:300
}, {
"aname": "inv 03",
“价值”:500
}]
}] }] }] }] }]
【问题讨论】:
标签:
javascript
arrays
lodash
【解决方案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)