d3.nest():在每个级别上添加子级的大小

时间:2019-07-11 05:43:08

标签: javascript json d3.js nested

我已经使用d3.nest()创建了嵌套的JSON。我正在尝试从层次结构的最低层到最高层的子级总数。

这就是我的嵌套数据的样子-

{'loc': 'London',
 'values':[
   { 
     'appgroups': 'A1|E1|London',
      'values':[
        {
         'roles': 'R1|A1|E1|London',
         'values':[
          {'id':'jane'},
          {'id':'mary'},
          {'id':'john'},
          {'id':'harry'},
          {'id':'sienna'}
          ]
        },
       {
         'roles': 'R2|A1|E1|London',
         'values':[
          {'id':'emily'},
          {'id':'steve'},
          {'id':'alex'}
          ]
        },
       {
         'roles': 'R3|A1|E1|London',
         'values':[
          {'id':'michael'},
          {'id':'eric'},
          {'id':'mike'}
          ]
        }  
   ]
}
]

这是我的代码---

let nested_data = d3.nest()
    .key(function(d) { return d.loc; })
    .key(function(d) { return d.appgroups; })
    .key(function(d) { return d.role; })
    .entries(data)
    .map(function(group) {
      return {
        loc: group.key,
        values : group.values.map(function(ingroup){
           let count = 0;
           return {
             appgroups: ingroup.key,
             size:ingroup.values.forEach(function(obj){
                count = count + obj.values.length;
                console.log(count);
              }),
            values: ingroup.values.map(function(iningroup){
                return {
                  roles: iningroup.key,
                  size: iningroup.values.length,
                  values: iningroup.values.map(function(ininingroup){
                    return {
                      id: ininingroup.id,
                      type: ininingroup.type,
                  }
            })
            }
        })
        }
    })
    }
})

我可以为每个角色增加大小,例如R1为5,R2为3,R3为3。现在,我尝试对loc和appgroup进行相同的操作,例如,对于A1来说为11,而location应该具有所有和。我尝试将总数相加,但无法使用forEach来获取每个应用程序组的值总和。还有其他方法吗?

0 个答案:

没有答案