Вложение 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» во всех строках из выдержки выше). Как я мог это сделать?
Большое спасибо за чтение!