2014-10-30 121 views
-4

我有以下的JSON,我試圖解析:JavaScript的JSON解析錯誤

{ 
    "brands": [ 
     { 
      "_id": "46378Bkjdd", 
      "result": { 
       "car": { 
        "Name": [ 
         "mercedes", 
         "bmw", 
         "golf", 
         "seat" 
        ] 
       } 
      } 
     }, 
     { 
      "_id": "cf876567", 
      "result": { 
       "car": { 
        "Name": [ 
         "renault", 
         "porsh" 
        ] 
       } 
      } 
     } 
    ] 
} 

需要獲得「名」有:mercredes,寶馬,高爾夫,座位,雷諾,porsh 規模可能更多的是2「_id」,這只是爲了舉例。

我試過,但它不工作:

for (var i=0; response.brands.length; i++){ 
    console.log("Names: "+response.brands.result.car.Name[i]); 
} 

感謝

+0

因爲它不是在你的代碼,你用'響應= JSON.parse(yourJSONString)'' – 2014-10-30 16:57:17

+4

brands'是一個數組。你需要'response.brands [0] .result.car.name [0]' - > mercedes – 2014-10-30 16:57:33

回答

1

你需要循環的Name陣列。另外brands是一個數組。你的循環需要類似i < array.length來開始,但它從來沒有。這是一個有效的。它緩存循環中的數組長度(在l),這被認爲是很好的做法。

var array = obj.brands[0].result.car.Name; 
for (var i = 0, l = array.length; i < l; i++) { 
    console.log('Name: ' + array[i]) 
} 

DEMO

0

遍歷所有給定的子陣列,你應該使用兩個for循環如下:

var brandsLen = a.brands.length; 
for (j = 0; j < brandsLen; ++j) { 
    var singleBrandLen = a.brands[j].result.car.Name.length; 
    for (i = 0; i < singleBrandLen; ++i) { 
     console.log(a.brands[j].result.car.Name[j]); 
    } 
} 

一個是你的輸入數組。

0

從功能出發,沒有循環:

var result = obj.brands.reduce(function (a, b) { 
    return a.concat(b.result.car.Name); 
}, []); 
console.log(result); 

輸出:

["mercedes", "bmw", "golf", "seat", "renault", "porsh"]