使用D3.nest()按列标题创建对象数组

时间:2014-03-12 19:16:18

标签: javascript arrays csv d3.js

我有一个格式为

的CSV文件

时间,组1,组2,组3
0,45,30,30,
1,30,25,31,
2,50,45,30,

我想将它构造为一个对象数组,以便: [{group1:array[3]}, {group2:array[3]},...]
其中每个array[3]本身就是一对配对的对象 时间列中的值,其值在相应的组列中 即:
group1 [{time:0, value:45},{time:1, value:30},...] group2 [{time:0, value:30},...]

D3.csv按行解析,我不知道如何使用d3.nest迭代生成的对象数组,或者是否有办法在d3.csv访问器函数中设置数据结构。 (如果我使用不正确的条款,我道歉)

1 个答案:

答案 0 :(得分:1)

您不必使用d3.nest()来执行此操作。您可以循环解析的csv文件,以便以您需要的格式存储数据。例如:

var csv = "time,group1,group2,group3\n0,45,30,30\n1,30,25,31\n2,50,45,30";
var data = d3.csv.parse(csv);
var result = [ {group1: []}, {group2: []}, {group3: []}]

data.forEach(function(d) {
    result[0]['group1'].push({time: +d.time, value: +d['group1']})
    result[1]['group2'].push({time: +d.time, value: +d['group2']})
    result[2]['group3'].push({time: +d.time, value: +d['group3']})
});

这不是最灵活的例子(因为列是硬编码的),但希望它会让你知道如何去做。