【问题标题】:How do you access an array of Objects using D3?如何使用 D3 访问对象数组?
【发布时间】:2013-09-16 04:28:27
【问题描述】:

我有一个 D3 图表,我正在尝试解析内联 JSON 格式的数组,而不是从外部加载数据。

不要做这样的事情:

d3.json("data/tsx.json", function (error, data) {
    data.forEach(function (d) {
        d.dateOrig = d.date;
        d.date = parseDate(d.date);
        d.close = +d.close;
});

我只想解析这样的内联 JSON 格式数组:

var data = [
  {"date":"1-May-13","close":58.13},
  {"date":"30-Apr-13","close":53.98},
  {"date":"27-Apr-13","close":67.00},
  {"date":"26-Apr-13","close":89.70},
  {"date":"25-Apr-13","close":99.00},
  {"date":"24-Apr-13","close":130.28},
  {"date":"23-Apr-13","close":166.70},
  {"date":"20-Apr-13","close":234.98},
  {"date":"19-Apr-13","close":345.44},
  {"date":"18-Apr-13","close":443.34},
];

  data.forEach(function(d) {
    d.date = parseDate(d.date);
    d.close = +d.close;

但这不适用于我在上面第一种方法中使用的相同代码。

我创建了一个可以工作的 Fiddle,但我可以看到我解析数组错误并且我的图表元素被创建了多次(与数组长度相同的次数)。当我从外部加载数据时,不会发生这种情况。

从这个 Fiddle 的第 35 行开始查看我的 cmets。

http://jsfiddle.net/Critter/Hc7zD/5/

如何重写我的代码以正确解析 JSON 数组?我难住了!非常感谢!

【问题讨论】:

  • 您的问题中没有 JSON。

标签: javascript json svg d3.js


【解决方案1】:

您的代码中似乎有错字:

在第 64 行左右,我想你想要:

data.forEach(function(d) {
  d.date = parseDate(d.date);
  d.close = +d.close;
}
);

更改正在终止 forEach ,而不是封装其余代码的 forEach 块。

然后,删除结尾的“);”在文件的末尾,它看起来对我来说是正确的。

【讨论】:

  • 这就是为什么拥有另一双眼睛可以大有帮助!这么简单的事情,在盯着代码看 12 个小时后,却能引起如此多的悲痛。非常感谢 cmonkey。
猜你喜欢
  • 2014-01-15
  • 2021-11-16
  • 2021-11-07
  • 1970-01-01
相关资源
最近更新 更多