将JSON数组解析为javascript数组

时间:2015-04-06 01:25:49

标签: javascript arrays json parsing

var jsonData = JSON.parse(pump_array);
var name_array = [];
var data_array = [];
for(var i=0;i<jsonData.pumps.length;i++)
{
data_array.push(data_array, pump_array.pumps[i].volume);
name_array.push(name_array, pump_array.pumps[i].iName);}

这是我的javascript代码。我试图解析以下json数组的特定部分,以便使用chart.js将其放入图形

var pump_array = {
"pumps":[
    {
  "id": 1,
  "isPrimed":true,
  "iName": "Whiskey",
  "volume": 850,
  "debug": "Test"
    },

    {
  "id": 2,
  "isPrimed":true,
  "iName": "Vodka",
  "volume": 900,
  "debug": "Test"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

这里好像有些不对劲。首先,您要对不是字符串的内容调用JSON.parse。它是一个成熟的Javascript对象。没有必要解析它;只是使用它。

其次,这两行每个都有一个额外的变量:

data_array.push(data_array, pump_array.pumps[i].volume);
name_array.push(name_array, pump_array.pumps[i].iName);}

据推测,他们应该阅读:

data_array.push(pump_array.pumps[i].volume);
name_array.push(pump_array.pumps[i].iName);}

但即使你纠正了这些问题,你仍然会得到一个不太理想的数据结构:

name_array; //=> ["Whiskey", "Vodka"]
data_array; //=> [850, 900]

不是单一的,有用的数据结构,而是最终只有两个不同的数据结构只能通过共享索引使用。

这样的事情怎么样?:

pump_array.pumps.reduce(function(soFar, pump) {
    soFar[pump.iName] = pump.volume; 
    return soFar;
}, {});
//=> {Whiskey: 850, Vodka: 900}

在我看来,这是一个更有用的数据结构。