我怎样才能遍历一个对象数组?

时间:2013-04-22 01:28:34

标签: javascript

如何循环遍历一组对象?

users = new Array()
users.push({id: "5", name: "solomom"});
users.push({id: "3", name: "jonathan"});
for(u in users){
    alert(u.name);
}

这提醒我未定义,我做错了什么? 我真的是一个javascript的新手。

4 个答案:

答案 0 :(得分:3)

将其更改为:

alert(users[u].name);

会使它警告预期值,因为for in循环遍历对象的键,但是你不应该使用for in循环来迭代Javascript中的数组。

而是使用常规for循环:

for(var i = 0; i < users.length; i++){
    alert(users[i].name);
}

您还应养成使用console.log进行调试而非alert的习惯。它将使您在需要时更容易调试。

答案 1 :(得分:1)

您正在考虑for...of

语法

for (variable of object)
  statement

参数

  • variable - 在每次迭代时,将不同属性的值分配给变量。
  • object - 迭代其可枚举属性的对象。

大多数现代浏览器都不支持此功能。


您可能希望将Array.forEach用于您想要完成的任务。

users.forEach(function(u) {
    alert(u.name);
});

答案 2 :(得分:0)

您应该使用常规for循环来遍历数组。 for-in循环迭代对象的可枚举属性。 JavaScript中的数组在技术上是一个对象,这是问题的来源。

for (var i = 0; i < users.length; ++i)
{
    alert( users[i].name );
}

答案 3 :(得分:0)

for..in循环将每个分配给u,而不是每个值。你需要做类似的事情 alert(users[u].name)

话虽如此,绝对不要在数组上使用for..in(除非它是稀疏的)。相反,这样做:

for( i=0, l=users.length; i<l; i++) {
    alert(users[i].name);
}