如何循环遍历对象数组?
users = new Array()
users.push({id: "5", name: "solomom"});
users.push({id: "3", name: "jonathan"});
for(u in users){
alert(u.name);
}
这提醒我未定义,我做错了吗?我真的是 javascript 的大新手。
如何循环遍历对象数组?
users = new Array()
users.push({id: "5", name: "solomom"});
users.push({id: "3", name: "jonathan"});
for(u in users){
alert(u.name);
}
这提醒我未定义,我做错了吗?我真的是 javascript 的大新手。
将其更改为:
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
. 当您需要时,它将使调试变得更加容易。
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);
});
您应该使用常规 for 循环来遍历数组。循环迭代对象的for-in
可枚举属性。JavaScript 中的数组在技术上是一个对象,这就是问题所在。
for (var i = 0; i < users.length; ++i)
{
alert( users[i].name );
}
for..in
循环将每个键分配给u
,而不是每个值。你需要做类似的事情
alert(users[u].name)
话虽如此,永远不要for..in
在数组上使用(除非它是稀疏的)。相反,请执行以下操作:
for( i=0, l=users.length; i<l; i++) {
alert(users[i].name);
}