json数据无法呈现

时间:2015-02-05 23:43:25

标签: javascript d3.js

我是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));

2 个答案:

答案 0 :(得分:2)

d.data数组中的元素具有以下结构:

  

[" 2015-02-28",67.53,68.67,67.05,67.68,0.0,67.68]

enter image description here

我不确定为什么这不是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;
}

http://jsfiddle.net/m5dfmf5r/5/