Вложение d3 на несколько ключей с петлей

Я использую d3.nest (), чтобы сделать иерархический объект из файла CSV.

Не могли бы вы помочь мне понять, почему следующий код не работает. Мне не удалось использовать функцию вложения в цикле, как описано ниже.

У меня есть следующий CSV-файл, взятый из примеров на сайте d3:

"type1","type2","type3","type4","type5","size"
"flare","analytics","cluster","AgglomerativeCluster","","3938"
"flare","analytics","cluster","CommunityStructure","","3812"
"flare","analytics","cluster","MergeEdge","","743"
"flare","analytics","graph","BetweennessCentrality","","3534"
"flare","analytics","graph","LinkDistance","","5731"

Это основные вложенные работы:

data = data.entries(csv)
        .key(function(d) {return d.type1; })
        .key(function(d) {return d.type2; })
        .key(function(d) {return d.type3; })
        .entries(csv);

Я хочу использовать массив значений для указания моих ключей для их динамического изменения.

Это работает:

    var data = d3.nest();
    var nesting = ["type1","type2","type3"];
    data = data.key(function(d) {return d[nesting[0]]; });
    data = data.key(function(d) {return d[nesting[1]]; });
    data = data.key(function(d) {return d[nesting[2]]; });
    data = data.entries(csv);

Но это не работает с петлей ...

    var data = d3.nest();
    for(var i=0;i<nesting.length;i++)
    {
        data = data.key(function(d) {return d[nesting[i]]; });
    }
    data = data.entries(csv);

Я не могу понять, почему версия цикла не работает ... Может быть, я что-то упускаю из-за возможностей d3.nest () ...

Кроме того, я хотел бы знать, есть ли способ "пропустить"? уровень вложенности, если на этом уровне ничего не заполнено (т. е. уровень «type5» во всех строках из выдержки выше). Как я мог это сделать?

Большое спасибо за чтение!

Ответы на вопрос(2)

Ваш ответ на вопрос