d3.nest (): добавить размер детей на каждом уровне - PullRequest
0 голосов
/ 11 июля 2019

Я создал вложенный JSON с помощью d3.nest ().Я пытаюсь получить сумму дочерних элементов от самого низкого уровня иерархии до самого верхнего уровня иерархии.

Вот так выглядят мои вложенные данные -

{'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,
                  }
            })
            }
        })
        }
    })
    }
})

Я мог бы добавить размер к каждой роли, например, 5 для R1, 3 для R2 и 3 для R3.Теперь я пытаюсь сделать то же самое для loc и appgroups, например, 11 для A1 и location должны иметь сумму всех.Я попытался добавить счетчик, но я не могу применить разрыв с forEach, чтобы получить сумму значений для каждой группы приложений.Есть ли другой способ сделать это?

...