Javascript 使用D3.nest()按列标题创建对象数组
我有一个CSV文件,格式如下: 时间,第一组,第二组,第三组Javascript 使用D3.nest()按列标题创建对象数组,javascript,arrays,csv,d3.js,Javascript,Arrays,Csv,D3.js,我有一个CSV文件,格式如下: 时间,第一组,第二组,第三组 0,45,30,30, 1,30,25,31, 2,50,45,30, 我想将其构造为一个对象数组,这样: [{group1:array[3]},{group2:array[3]},…] 其中每个数组[3]本身就是一个成对的对象数组 时间列中的值及其各自的组列中的值 i、 e.: group1[{time:0,value:45},{time:1,value:30},…]group2[{time:0,value:30},…] D3.cs
0,45,30,30,
1,30,25,31,
2,50,45,30, 我想将其构造为一个对象数组,这样:
[{group1:array[3]},{group2:array[3]},…]
其中每个
数组[3]
本身就是一个成对的对象数组
时间列中的值及其各自的组列中的值
i、 e.:group1
[{time:0,value:45},{time:1,value:30},…]
group2[{time:0,value:30},…]
D3.csv按行解析,我不确定如何使用D3.nest遍历生成的对象数组,或者是否有方法在D3.csv访问器函数中设置数据结构。(如果我使用术语不当,我深表歉意)您不必使用
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']})
});
这不是最灵活的示例(因为列是硬编码的),但希望它能让您了解如何进行