引用json文件中的数组

Referencing arrays within json file

本文关键字:数组 文件 json 引用      更新时间:2023-09-26

我花了一天的时间来解决这个问题,这里肯定需要一些帮助。我知道这是一个新手问题,所以谢谢你的帮助!!我在文件'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',但无济于事。此外,如果将数据简化为只有第一个没有标题的数组,则代码可以顺利运行。

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

你可以试试data.array1.forEach(...)data.array2.forEach(...)

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

循环遍历对象

根据我的评论:这样做-

[{ "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}
    ]
}];

这应该工作的原因是因为你正在请求forEach,它应该引用一个数组。一个对象,就像你写的,会被单独调用。比如@vic states,使用forEach。每个数组一个。

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