从对象数组中获取数据

时间:2013-04-16 18:24:19

标签: javascript

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

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

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

0: Object

  ...

  id:   10

  ...

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

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

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

6 个答案:

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

答案 1 :(得分:2)

您只能使用data[item].id进行访问。 for-in循环中的实际项目将给出索引。

例如: -

data=[
    {
        id:1
    },{
        id:2
    },{
        id:3
    },{
        id:4
    }
    ];
for(var ind in data)
{
    alert(data[ind].id);
}

答案 2 :(得分:1)

我相信你在寻找:

for(var i=0;i<arrayname.length;i++){
...
}

答案 3 :(得分:1)

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

0:obj1
1:obj2

你试图直接访问对象忽略数组索引。

试试这个。

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

}

答案 4 :(得分:1)

您的陈述不正确。

试试这个:

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);
}

答案 5 :(得分:1)

如果你想在控制台中看到每个对象的内容,然后是每个对象的id属性,试试这个(至少在firebug和chrome console中工作):

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

}