我是D3js的新手,并且在使用json文件时遇到了一致的问题。这个问题让我非常困惑。我发布了一个例子:
http://jsfiddle.net/tommy6s/m5dfmf5r/
我一直在控制台工作,并尝试了以下以及我能想到的其他所有组合:
console.log(data) //returns data
console.log(data.value); //returns undefined
console.log(d.value); //returns d is not defined
console.log(data[0].value); //returns 67.53 first single value
我也收到了控制台错误:TypeError: string.slice is not a function
var n = d3_time_numberRe.exec(string.slice(i, i + 4));
答案 0 :(得分:2)
d.data数组中的元素具有以下结构:
[" 2015-02-28",67.53,68.67,67.05,67.68,0.0,67.68]
我不确定为什么这不是JSON对象(具有字段值对),但为了访问它,您需要执行以下操作:
function(error, d) {
var data = d.data;
data.forEach(function(d) {
var date = parseDate(d[0]);
var open = d[1];
var high = d[2];
..
var close= d[6];
});
}
答案 1 :(得分:0)
看起来你要归还的日期几乎都是空的。
在您的示例中执行以下操作作为此测试:
data.forEach(function(d) {
console.log(d);
d.date = parseDate(d.date);
d.value = +d.value;
});
你会注意到它在尝试之后失败了。 d.date中的每个日期都为空。导致parseDate函数失败。
在你的类型函数中向下我改为使用javascript new Date来转换它并在forEach循环中删除第二次调用parseDate来修复它。
function type(d) {
var obj = {};
console.log(d);
obj.date = new Date(d[0]); //Use the javascript date object is perhaps better?
obj.value = d[1];
return obj;
}