1

如何循环遍历对象数组?

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

这提醒我未定义,我做错了吗?我真的是 javascript 的大新手。

4

4 回答 4

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. 当您需要时,它将使调试变得更加容易。

于 2013-04-22T01:31:34.810 回答
1

You're thinking of for...of

Syntax

for (variable of object)
  statement

Parameters

  • variable - On each iteration a value of a different property is assigned to variable.
  • object - Object whose enumerable properties are iterated.

This isn't supported in most modern browsers.


You'd probably want to use Array.forEach for what you're trying to accomplish.

users.forEach(function(u) {
    alert(u.name);
});
于 2013-04-22T01:35:30.117 回答
0

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

for (var i = 0; i < users.length; ++i)
{
    alert( users[i].name );
}
于 2013-04-22T01:31:25.757 回答
0

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

话虽如此,永远不要for..in在数组上使用(除非它是稀疏的)。相反,请执行以下操作:

for( i=0, l=users.length; i<l; i++) {
    alert(users[i].name);
}
于 2013-04-22T01:31:44.277 回答