【问题标题】:csv parsing into arrays in d3csv在d3中解析成数组
【发布时间】:2014-05-13 23:17:19
【问题描述】:

我无法将 csv 文件解析为空数组。似乎我可以解析文件,但似乎无法填充数组。

这是我的 csv 文件的简略视图(157 行 - 此处显示 9):

"",percentage "1",0.275862068965517 "2",0.137931034482759 "3",0.133333333333333 "4",0.4 "5",0.633333333333333 "6",0.766666666666667 "7",0.379310344827586 "8",0.724137931034483 "9",0.933333333333333

这是我在 d3 中的代码:

var values = [];

d3.csv("wlythree.csv", function(data) {
  values = data.map(function(d) { return [ +d["percentage"] ]; });
});

console.log(values)

它在控制台中打印出一个空数组。我输入 console.log 只是为了检查我的代码——除此之外不需要它。我所需要的只是数组中的百分比列,我的其余代码可以完美运行。我似乎无法弄清楚,任何帮助将不胜感激!

【问题讨论】:

  • 我对您的评论的回复是否说明了这种情况?

标签: javascript csv d3.js


【解决方案1】:

这应该可以解决问题:

d3.csv("wlythree.csv", function(data) {
    var values = [];
    values = data.map(function(d) { return d.percentage; });

    console.log(values)
});

它产生:

["0.275862068965517", "0.137931034482759", ...]

编辑:在回调中放置values 的声明,因为 csv 加载是异步的,可以更好地反映脚本流程。

【讨论】:

  • 感谢您的回复!不完全是我正在寻找的东西。我想解释一下,我希望用这些值填充全局变量值。
  • 所以如果你把 console.log(values) 放在函数之外,它应该填充百分比数据
  • 您必须记住,csv 加载是异步。您要么需要在此回调函数内或在您从中调用的另一个函数内完成所有涉及变量 values 的事情。如果您在回调之外使用values,则无法保证在您使用它之前已设置它。说得通?您可以在 SO 上搜索 d3.csv 并获取更多信息。我将编辑我的回复并将values 的声明放在调用中,因为这样可以更好地反映正在发生的事情。
猜你喜欢
  • 2014-04-30
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2018-05-01
相关资源
最近更新 更多