如何循环遍历一组对象?
users = new Array()
users.push({id: "5", name: "solomom"});
users.push({id: "3", name: "jonathan"});
for(u in users){
alert(u.name);
}
这提醒我未定义,我做错了什么? 我真的是一个javascript的新手。
答案 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);
}