-2

我目前正在尝试将对象数组显示为 html 表中的行。我是 javascript 新手,无法访问数组中的单个元素。

在控制台中,数组是:[Object, Object, Object, ... Object, Object, Object] 总共 65 个对象。

每个对象都有一个名为 id 的字段,控制台中的每个对象显示如下:

0: Object

  ...

  id:   10

  ...

我尝试使用以下代码访问 id:

for (var item in data) {
    console.log(item);
    console.log(item['id']);
}

这向我显示了对象编号,后跟未定义的行。我知道数据是有价值的,因为我可以在控制台中查看它,但我无法使用点表示法或上述表示法访问。任何帮助将不胜感激。

4

6 回答 6

5

使用for..in循环时,它会遍历键。然后,您需要使用data[item]['id']来获得该值。

但是,您不应该使用for..in循环来遍历数组(除非它们是稀疏的)。相反,试试这个:

for( var i=0, l=data.length; i<l; i++) {
    console.log(i);
    console.log(data[i]['id']);
}
于 2013-04-16T18:28:54.913 回答
2

您只需使用data[item].id. 循环中的事实项目for-in将给出索引。

前任:-

data=[
    {
        id:1
    },{
        id:2
    },{
        id:3
    },{
        id:4
    }
    ];
for(var ind in data)
{
    alert(data[ind].id);
}
于 2013-04-16T18:28:27.827 回答
1

我相信您正在寻找:

for(var i=0;i<arrayname.length;i++){
...
}
于 2013-04-16T18:28:27.900 回答
1

你得到未定义,因为你的对象包含数组,并且该数组在其索引中包含对象。格式是这样的:

0:obj1
1:obj2

您正在尝试直接访问对象而忽略数组索引。

尝试这个。

for(var j=0; j<data.lenght; j++){
console.log(item[j]['id']);

}
于 2013-04-16T18:28:46.037 回答
1

您的 for 语句不正确。

尝试这个:

for(var item in data){
  var dataItem = data[item];

   console.log(dataItem.id);
}

虽然一般来说,我发现使用 for 循环而不是 for..in 循环来循环数组项是更好的做法,所以这可能会更好:

var dLength = data.length;
for(var i=0; i<dLength; i++){
  var dataItem = data[i];

  console.log(dataItem.id);
}
于 2013-04-16T18:29:03.157 回答
1

如果您想在控制台中查看每个对象的内容,然后是每个对象的 id 属性,请尝试以下操作(至少在 firebug 和 chrome 控制台中有效):

for (var item in data) {
console.log("%o", data[item]);
console.log("%o", data[item][id]);

}

于 2013-04-16T18:31:12.750 回答