我花了一天时间在这个问题上苦苦挣扎,绝对可以在这里使用一些帮助。我知道这是一个新手的问题,所以感谢任何帮助!我在文件'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'无济于事。此外,如果数据被简化为我只有第一个没有标题的数组,我的代码工作顺利。
答案 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。每个阵列一个。
我设置代码的方式是将两个对象放入数组