Javascript对象数组访问属性未定义?

use*_*894 0 javascript arrays json

这是我从firebug得到的一些输出

<div id='div_undefined'>[{"Region":"AD","Date":"","ArticleID":"abc-345"},    {"Region":"CD","Date":"","ArticleID":"abc-345"}]</div>
Run Code Online (Sandbox Code Playgroud)

你可以在那里看到JS Object数组并注意div_undefined.如果你看下面的功能,我知道我的对象是定义的,因为它正在打印出来.当我尝试访问ArticleID时,为什么Items [0]返回undefined

这是我的函数的代码

function myFunc(Items){
    var item = Items[0];
    Write("<div id='div_" + item.ArticleID + "'>" + Items + "</div>");
}
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 6

如果连接Items产生这个输出,那么它是一个字符串(包含JSON),你必须首先将它解析为JS数据结构(在这种情况下是一个数组):

function myFunc(Items){
    Items = JSON.parse(Items);
    var item = Items[0];
    Write("<div id='div_" + item.ArticleID + "'>" + Items + "</div>");
    // Will output
    // <div id='div_abc-345'>[object Object], [object Object]</div>
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,在将值传递给函数之前,您将执行此操作.我不知道你追求的输出是什么,所以我可以建议.


否则,Items[0]引用字符串的第一个字母(也是一个字符串),字符串没有ArticleID属性,因此你得到undefined.


您可能会发现此问题也很有用:访问/处理(嵌套)对象,数组或JSON如Matt所提到的(在另一个问题中),如果要调试代码,请使用console.log.