Javascript 使用D3.JS将CSV转换为JSON
我有一个以下格式的csv文件Javascript 使用D3.JS将CSV转换为JSON,javascript,json,d3.js,linechart,Javascript,Json,D3.js,Linechart,我有一个以下格式的csv文件 type,1,2,3,4,5,6,7,8,.... // Upto 48 type1,54.69801915,84.4717406,81.87766667,66.48516667,... type2,51.57399106,84.23170179,82.13950136,67.37540461,... ...... 我想用这个csv数据和d3画一个折线图。一旦我用下面的代码嵌套它们 d3.nest().key(function(d) { return d
type,1,2,3,4,5,6,7,8,.... // Upto 48
type1,54.69801915,84.4717406,81.87766667,66.48516667,...
type2,51.57399106,84.23170179,82.13950136,67.37540461,...
......
我想用这个csv数据和d3画一个折线图。一旦我用下面的代码嵌套它们
d3.nest().key(function(d) {
return d.type;
}).entries(data);
我的json如下所示
{ key: "type1", values: […] }
在值中
它只是一个单元素数组,它的值是{1:54.6980195,2:84.4717406,3:81.87766667,}
但我的期望是,这将是一个类似于
{ { 1: 54.69801915}, {2: 84.4717406}, {3: 81.87766667}, … }
有人能告诉我我做错了什么吗?或者我应该如何获得预期的格式?好吧,这就是
d3.nest()的预期行为
如果您希望在问题中使用值
作为对象数组的结构,我建议您编写自己的嵌套函数
下面是一个代码示例,它使用map
和for…in
实现您想要的功能。它既不优雅也不美观,它故意冗长以便于理解(我只在数据中使用了几列和几行):
var csv=`type,1,2,3,4
类型1,54.69801915,84.4717406,81.87766667,66.48516667
类型2,51.57399106,84.23170179,82.13950136,67.37540461`;
var数据=d3.csvParse(csv);
var嵌套=data.map(函数(d){
var obj={
关键词:d型,
值:[]
};
用于(d中的var prop){
如果(道具!=“类型”){
obj.values.push({
[道具]:d[道具]
})
}
}
返回obj;
});
console.log(嵌套)