我有一个 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;
但是使用我在上面第一种方法上使用的相同代码不起作用。
我已经创建了一个有效的小提琴,但我可以看到我解析数组错误,并且我的图表元素被多次创建(与数组长度的次数相同)。当我在外部加载数据时,不会发生这种情况。
请参阅我在此小提琴中从第 35 行开始的评论。
http://jsfiddle.net/Critter/Hc7zD/5/
如何重写代码以正确解析 JSON 数组?我被难住了!非常感谢!
这似乎是代码中的拼写错误:
在第 64 行左右,我认为您想要:
data.forEach(function(d) {
d.date = parseDate(d.date);
d.close = +d.close;
}
);
更改是在那里终止 forEach,而不是封装代码其余部分的 forEach 块。
然后,删除尾随的");"在文件的末尾,对我来说它看起来是正确的。