【问题标题】: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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      相关资源
      最近更新 更多