d3 zagnieżdżanie na kilku klawiszach za pomocą pętli

Używam d3.nest () w celu utworzenia obiektu hierarchicznego z pliku CSV.

Czy mógłbyś mi pomóc zrozumieć, dlaczego poniższy kod nie działa. Nie udało mi się użyć funkcji zagnieżdżania w pętli, jak opisano poniżej.

Mam następujący plik CSV, zaczerpnięty z przykładów na stronie 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"

To podstawowe zagnieżdżanie działa:

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

Chcę użyć tablicy wartości, aby określić moje klucze w celu ich dynamicznej modyfikacji.

To działa:

    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);

Ale to nie działa z pętlą ...

    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);

Nie rozumiem, dlaczego wersja pętli nie działa ... Może brakuje mi czegoś o możliwościach d3.nest () ...

Chciałbym również wiedzieć, czy istnieje sposób „pomijania” poziomu zagnieżdżenia, jeśli na tym poziomie nie ma nic wypełnionego (tj. Poziom „type5” na wszystkich liniach z powyższego wyciągu). Jak mogłem to zrobić?

Wielkie dzięki za czytanie!

questionAnswers(2)

yourAnswerToTheQuestion