2016-09-19 20 views
-4

我有這個js輸出JS試圖訪問數組對象給我不確定

enter image description here

我試圖使用這種方法來訪問ModelState中數組的第一個成員:

console.log(data.ModelState[0]); 

但我得到未定義的錯誤。

此外,當試圖做alert(data.ModelState)我得到對象的對象。

任何想法如何訪問ModelState數組中的第一個值?謝謝

+1

我相信是有對象空白鍵(或可能是空格?),它有一個數組作爲值。所以你需要像'data.ModelState [「」] [0]' – vlaz

+0

你在測試這個瀏覽器? @Laziale –

+0

@RanojitBanerjee這就是Firefox。更具體地說,Firebug擴展。 – vlaz

回答

0

我看起來你的數據包含一個空白或空白鍵的數組。因此,它最有可能是這樣的

{ 
    ModelState: { 
     "": [ "string1", "string2" ] 
    } 
} 

您需要通過密鑰才能訪問它在那裏,只要你知道它是什麼,例如data.ModelState[""][1] //"string1"

也有選擇,如果你不知道他們的關鍵是還是想不太脆代碼:

var data = { 
 
    ModelState: { 
 
    "": [ "string1", "string2" ] 
 
    } 
 
}; 
 

 
console.log("--Using Object.keys--") 
 
Object.keys(data.ModelState).forEach(function(key) { 
 
    console.log(data.ModelState[key]); 
 
}) 
 

 
console.log("--Using for...in loop--") 
 
for (var key in data.ModelState) { 
 
    console.log(data.ModelState[key]); 
 
}

0

您將不得不使用data.ModelState[''][0]訪問它。看起來你有一個嵌套數組,其中包含兩個字符串的數組元素具有一個空索引或一個空白字符串。

0

[object Object]是你的第一個線索 - 雖然我不能重現你確切的問題,但它看起來像你認爲是一個數組實際上是一個JavaScript Object,這是一個不同的數據結構。 JS對象與其他面嚮對象語言的對象非常相似。正如你所注意到的,它們的字符串表示形式是[object Object]],不管它們的內容如何。

> String({}) 
< "[object Object]" 
> String({abc: "foo", def: "bar"}) 
< "[object Object]" 

如果你更新有關如何重現它,我可以幫助更多,步驟,你的問題,但我希望這是足以讓你在正確的軌道上!