引用json文件中的数组

时间:2014-07-03 20:33:13

标签: javascript json d3.js

我花了一天时间在这个问题上苦苦挣扎,绝对可以在这里使用一些帮助。我知道这是一个新手的问​​题,所以感谢任何帮助!我在文件'bar_chart.json'

中有以下示例数据
{ "array1":
[
    {"name": "Locke", "value": 2},
    {"name": "Reyes", "value": 50},
    {"name": "Ford", "value": 12},
    {"name": "Jarrah", "value": 35},
    {"name": "Shephard", "value": 15},
    {"name": "Kwon", "value": 4}
],
    "array2":
    [
    {"name": "Jason", "value": 5},
    {"name": "Reston", "value": 13},
    {"name": "Travis", "value": 12},
    {"name": "Matt", "value": 7},
    {"name": "Glenn", "value": 22},
    {"name": "Kyoo", "value": 28}
    ]
}

我正在尝试访问array1中的数据来构建一个条形图,这就是我遇到困难的地方。下面是我收到错误的代码部分。

d3.json("bar_chart.json", function(error, data) {

    data.forEach(function(d) { //error occurs here 'undefined is not a function'

        d.name= d.name
        d.value = +d.value;

    });
...

我也试过'd.array1.name'代替'd.name'无济于事。此外,如果数据被简化为我只有第一个没有标题的数组,我的代码工作顺利。

2 个答案:

答案 0 :(得分:0)

你的json是一个对象,你不能在一个对象上调用forEach,你只能在数组上调用它。

您可以尝试data.array1.forEach(...)data.array2.forEach(...)

或者,您可以使用for (var x in data) {...}

循环访问该对象

答案 1 :(得分:0)

根据我的评论:像这样做 -

[{ "array1":
    [
        {"name": "Locke", "value": 2},
        {"name": "Reyes", "value": 50},
        {"name": "Ford", "value": 12},
        {"name": "Jarrah", "value": 35},
        {"name": "Shephard", "value": 15},
        {"name": "Kwon", "value": 4}
    ]
 },
 { "array2":
    [
        {"name": "Jason", "value": 5},
        {"name": "Reston", "value": 13},
        {"name": "Travis", "value": 12},
        {"name": "Matt", "value": 7},
        {"name": "Glenn", "value": 22},
        {"name": "Kyoo", "value": 28}
    ]
}];

这应该起作用的原因是因为你要求每个应该引用一个数组。像你在写的一个对象将被单独调用。就像@vic国家一样,有forEach。每个阵列一个。

我设置代码的方式是将两个对象放入数组