2014-01-14 58 views
0

我有以下循環,我爲循環通過是遍歷數據中獲取價值

"data": [ 
    { 
     "MainArea": "North West" 
    }, 
    { 
     "MainArea": "South West" 
    }, 

迭代

for (var i in data) { 
    console.log(data[i]) 
} 

數據當我運行它,我得到的螢火以下輸出

[Object { MainArea="North West"}, 
Object { MainArea="South West"}] 

我想要得到的只是它的價值。所以,當我試圖

console.log(data[i].MainArea) 

希望能得到公正的「西北」和西南」的價值觀,而不是 我得到‘在我的控制檯未定義’

+0

看到下面的答案,你需要通過'data.data' –

回答

2

的問題是數據對象,你是迭代有另一個屬性稱爲數據是包含目標對象的數組,當然你需要使用屬性關鍵是MainArea所以儘量

var data = { 
    "data": [{ 
     "MainArea": "North West" 
    }, { 
     "MainArea": "South West" 
    }] 
} 
for (var i in data.data) { 
    console.log(data.data[i].MainArea) 
} 

演示: Fiddle

5

嘗試以下操作:

console.log(data[i].MainArea); 

您正在試圖獲取信息了對象屬性的。因爲你的變量封閉的,以JSON格式列表中,您可以通過命名屬性達到您的變量。

更新:根據您的原始問題除了我創建的DEMO

var myObj = {"data": [ 
         { 
          "MainArea": "North West" 
         }, 
         { 
          "MainArea": "South West" 
         }, 
        ], 
      }, 
    data = myObj['data'], 
    data_length=data.length; 

for (var i= 0; i < data_length; i++) 
{ 
    console.log(data[i].MainArea); 
}  

請記住,當你迭代的鍵值對,你應該使用for ... in循環而當你迭代通過數組,你應該使用for循環。例如,如果您的data屬性包含已排序的數組,for ... in循環將無法保證從數組項目0循環到N。這意味着它不會按照順序。因此,對於非數組對象只能使用for循環,對於非數組對象只能使用for ... in。請閱讀here。有些jsPerf比較可見here

+0

我試了一下,我在控制檯中看到「未定義」 –

+0

好進行迭代。你可以發佈你的'數據'對象初始化嗎? – Khamidulla

+0

我剛更新了原始數據的代碼。我從存儲過程中獲取這些數據。一切工作正常,我只是不知道如何纔得到價值部分,即「西北部」..感謝 –

1

的對象被定義爲這樣的:

{ MainArea="North West" } 

所以只有一個屬性,稱爲MainArea。有沒有財產叫value所以當然valueundefined。嘗試:

console.log(data[i].MainArea) 
+1

這是不正確的JS語法。對象屬性是'key:value',而不是'key = value'。 – jfriend00

+0

@ jfriend00:有效的點,但這裏的語法似乎是他在調試器中看到的只是從問題中複製/粘貼。 – David