我目前正在尝试将对象数组显示为html表中的行。我是javascript的新手,我无法访问数组中的各个元素。
在控制台中,数组是:[Object,Object,Object, ... 对象,对象,对象] 65个对象。
每个对象都有一个名为id的字段,控制台中的每个对象都显示如下:
0: Object
...
id: 10
...
我尝试使用以下代码访问id:
for (var item in data) {
console.log(item);
console.log(item['id']);
}
这显示了对象编号后跟一行未定义的行。我知道数据有一个值,因为我可以在控制台中查看它,但我无法使用点表示法或上述表示法访问。非常感谢任何帮助。
答案 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]);
}