gpt4 book ai didi

javascript - 使用 D3.JS 将 CSV 转换为 JSON

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:07 25 4
gpt4 key购买 nike

我有一个如下格式的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,...
......

我想使用带有 d3 的 csv 数据绘制折线图。一旦我使用下面的代码嵌套它们

d3.nest().key(function(d) { 
return d.type;
}).entries(data);

我的 json 如下所示

{ key: "type1", values: […] }

values 里面,它只是一个单元素数组,它的值为 { 1: 54.69801915, 2: 84.4717406, 3: 81.87766667, … }

但我的期望是那将是一个类似于

的数组
{ { 1: 54.69801915}, {2: 84.4717406}, {3: 81.87766667}, … }

有人能告诉我我做错了什么吗?或者我应该如何获得我期望的格式?

最佳答案

嗯,这是 d3.nest() 的预期行为。

如果您想要您在问题中共享的结构,将 values 作为对象数组,我建议您编写自己的嵌套函数。

这是一个代码示例,它使用 mapfor...in 来执行您想要的操作。它既不优雅也不美观,它故意冗长以便于理解(我在您的数据中只使用了几列和几行):

var csv = `type,1,2,3,4
type1,54.69801915,84.4717406,81.87766667,66.48516667
type2,51.57399106,84.23170179,82.13950136,67.37540461`;

var data = d3.csvParse(csv);

var nested = data.map(function(d) {
var obj = {
key: d.type,
values: []
};
for (var prop in d) {
if (prop !== "type") {
obj.values.push({
[prop]: d[prop]
})
}
}
return obj;
});

console.log(nested)
<script src="https://d3js.org/d3.v5.min.js"></script>

一些补充意见:

  • 您在问题中所拥有的不是 JSON,它只是一个简单的 JavaScript 对象。
  • 您在问题末尾所说的数组 既不是数组也不是对象,这实际上是无效的。
  • 最后,不要使用数字作为您的属性名称。

关于javascript - 使用 D3.JS 将 CSV 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com