无法访问json对象的属性

时间:2014-12-04 18:01:35

标签: javascript json object

我似乎无法触及我的对象变量,我可能只是在某处做了一个虚假的错误。我的对象数组(pResult)的console.log看起来像这样,第一个对象扩展但它们看起来都很相似:

[Object, Object, Object, Object, Object, Object, Object, Object, Object]

0: Object
depTime: "2014-12-04 18:35"
destination: "Norsesund station"
nr: "562"
operator: "Västtrafik"
typText: "Buss"
__proto__: Object
1: Object
2: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
length: 9
__proto__: Array[0]

我试着这样做......

for (var i = 0; i <= pResult.length; i++) {
    var html =  html + '<tr>';
    var html =  html + '<td>';
    var html =  html + pResult[i].depTime;
    var html =  html + '</td>';
    var html =  html + '</tr>';
}

...但是遇到了这个错误:

Uncaught TypeError: Cannot read property 'depTime' of undefined

3 个答案:

答案 0 :(得分:3)

更改:

i <= pResult.length;

致:

i < pResult.length;

数组基于0是索引的,因此如果它的长度为3,则只有索引0,1,2

答案 1 :(得分:1)

您可以简单地使用reduce

,而不是使用循环
var html = pResult.reduce(function(previousValue, currentValue) {
    return previousValue + '<tr><td>' + currentValue.depTime + '</td></tr>';
}, '');

请注意,这仅适用于IE 9+(但它适用于所有其他现代浏览器),因此如果您需要支持旧版本的IE,则可以填充该方法。

答案 2 :(得分:0)

试试这个:

for (var i = 0; i < pResult.length; i++) {
        var html =   '<tr>';
            html +=  html + '<td>';
                html +=  html + pResult[i].depTime;
            html +=  html + '</td>';
        html +=  html + '</tr>';
}

问题是你是loopin,直到数组长度,但数组从0索引开始,所以
 如果你有阵列
var pResult= [object,object,object]; pResult.length =3 pResult[3]不存在,因此未定义 注意当您只想添加文本时,不要重新创建变量,只需将其添加到现有文件中即可。例如html + =&#34;添加的文字&#34;