2015-04-06 41 views
0
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的圖形中。將一個JSON數組解析爲一個javascript數組

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

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

你到底想要做什麼?你能描述一下你需要你的陣列嗎? – 2015-04-06 01:29:14

+0

當你還沒有分配任何東西時,你認爲'pump_array'有什麼用處?考慮用'jsonData.pumps'替換'pump_array'。或設置'pump_array = jsonData.pumps;' – enhzflep 2015-04-06 01:37:28

+0

'JSON.parse'用於字符串,而不是任意對象。 – 2015-04-06 01:53:45

回答

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} 

我的眼睛,這是一個更加有用的數據結構。

相關問題