试图访问JS中的数组对象给我未定义

时间:2016-09-19 17:58:57

标签: javascript jquery arrays

我有这个JS输出

enter image description here

我正在尝试使用这种方法访问ModelState数组的第一个成员:

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

但是我得到了未定义的错误。

同样在尝试做警报(data.ModelState)时,我正在获取Object对象。

如何访问ModelState数组中的第一个值?

3 个答案:

答案 0 :(得分:0)

您必须使用data.ModelState[''][0]访问它。看来你有一个嵌套数组,包含两个字符串的数组元素有一个空的或只有空格的索引字符串。

答案 1 :(得分:0)

[object Object]是你的第一个线索 - 虽然我无法重现你的确切问题,看起来你认为是一个数组的对象实际上是JavaScript Object,这是一个不同的数据结构。 JS对象与其他面向对象语言的对象非常相似。正如您所注意到的,他们的字符串表示是[object Object]],无论其内容如何。

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

如果您使用有关如何重现问题的步骤更新您的问题,我可以提供更多帮助,但我希望这足以让您走上正确的轨道!

答案 2 :(得分: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]);
}