2013-03-05 88 views
1

失去了讀取數據的JSON對象中林種,這裏的JSON我有:我應該如何在for循環中使用JavaScript訪問JSON?

var data = [ 
      {"mes":{ 
        "January":{ 
        "Inversion":"1000","Fans":"1020"} 
          } 
       }, 
      {"mes":{ 
       "February":{ 
        "Inversion":"15500","Fans":"285"} 
          } 
      } 
      ] 

我希望能夠打印,如:

一月1000,1020

二月,15500,285

謝謝!

+4

[?你嘗試過什麼(HTTP ://whathaveyoutried.com/) – 2013-03-05 03:00:10

+0

data [0] .mes.January或data [0] .mes.January.Inversion,在兩種情況下,它都顯示「undefined」 – 2013-03-05 03:02:49

+0

它對我來說工作正常。 – zz3599 2013-03-05 03:07:00

回答

0
// initialise variable to build output 
var out = [] 

// loop through the array 
for(var i=0;i < data.length; i++){ 

    // get a reference to the inner object 
    var item = data[i].mes 

    // loop through the inner object (k is the key name) 
    for(k in item){ 
     // push the built up string onto the output array 
     out.push(k+", "+item[k].Inversion+", "+item[k].Fans) 
    } 
} 

// display the output, joining with newlines 
console.log(out.join("\n")) 
0
for (var i = 0; i < data.length; i += 1) { 
    obj = data[i].mes; 
    for (key in obj) { 
    if(obj.hasOwnProperty(key)) { 
     var monthName = key; 
    } 
    } 
    var iv = obj[monthName].Inversion; 
    var fans = obj[monthName].Fans; 
    console.log(monthName + "," + iv + "," + fans); 
} 

工作例如:http://jsfiddle.net/sXtZk/

0

在它的心臟,JSON真的是結合基本的醇」 JS數組和對象,使能在服務器之間交換的對象只是一種正式的方式並且很容易解析。

那麼,你如何迭代數組?

for (i=0; i<array.length; i++) 
    fn(array[i]); 

枚舉JS對象/ map中的值怎麼樣?

for (key in obj) 
    fn(obj[key]); 

讓我們嘗試把這些在一起,然後:

for (var i=0; i < data.length; i++) { 

    for (var key in data[i]["mes"]) { 
     var mName = key; 
     var inversion = data[i]"mes"][key]["Inversion"]; 
     var fans = data[i]"mes"][key]["Fans"] 
     alert([mName, inversion, fans].join(", ")); 
    } 
} 

我會補充說,儘管你的JSON結構比較差。在每個級別上,您都有mes作爲與過度嵌套的對象相對應的鍵。在這種情況下,mes沒有實際意義。考慮,相反,這個結構:

var data = [ 
    { 
     "mes": "January", 
     "Inversion": "1000", 
     "Fans": "1020" 
    }, 
    { 
     "mes": "February", 
     "Inversion": "15500", 
     "Fans": "285" 
    } 
]; 

這是更簡單,更符合邏輯,(你會發現)更易於使用:

for (var i=0; i < data.length; i++) { 
    var objToString = []; 

    for (var key in data[i]) { 
     objToString.push(data[i][key]); 
    } 

    alert(objToString.join(", ")); 
}