Javascript 如何循环遍历一组对象?
如何在对象数组中循环Javascript 如何循环遍历一组对象?,javascript,Javascript,如何在对象数组中循环 users = new Array() users.push({id: "5", name: "solomom"}); users.push({id: "3", name: "jonathan"}); for(u in users){ alert(u.name); } 这提醒我未定义,我做错了什么吗? 我真的是javascript的新手。你应该使用一个常规的for循环来循环数组。for in循环迭代对象的可枚举属性。JavaScript中的数组在技术上是一个对象,
users = new Array()
users.push({id: "5", name: "solomom"});
users.push({id: "3", name: "jonathan"});
for(u in users){
alert(u.name);
}
这提醒我未定义,我做错了什么吗?
我真的是javascript的新手。你应该使用一个常规的for循环来循环数组。for in循环迭代对象的可枚举属性。JavaScript中的数组在技术上是一个对象,这就是问题的根源
for (var i = 0; i < users.length; ++i)
{
alert( users[i].name );
}
for(变量i=0;i
您应该使用常规for循环来循环数组。for in循环迭代对象的可枚举属性。JavaScript中的数组在技术上是一个对象,这就是问题的根源
for (var i = 0; i < users.length; ++i)
{
alert( users[i].name );
}
for(变量i=0;i
将其更改为:
alert(users[u].name);
将使其警告预期值,因为循环迭代对象的键,但是不应使用for in
循环迭代Javascript中的数组
而是使用常规for循环:
for(var i = 0; i < users.length; i++){
alert(users[i].name);
}
for(var i=0;i
您还应该养成使用console.log
进行调试的习惯,而不是使用alert
。当您需要调试时,它将使调试更加容易。将其更改为:
alert(users[u].name);
将使其警告预期值,因为循环迭代对象的键,但是不应使用for in
循环迭代Javascript中的数组
而是使用常规for循环:
for(var i = 0; i < users.length; i++){
alert(users[i].name);
}
for(var i=0;i
您还应该养成使用
console.log
进行调试的习惯,而不是使用alert
。当您需要时,它将使调试更加容易。Afor..in
循环将每个键分配给u
,而不是每个值。您需要执行类似于警报(用户[u].name)
也就是说,不要在数组上使用for..in
(除非是稀疏的)。相反,请执行以下操作:
for( i=0, l=users.length; i<l; i++) {
alert(users[i].name);
}
for(i=0,l=users.length;iAfor..in
循环将每个键分配给u
,而不是每个值。您需要执行类似于
警报(用户[u].name)
也就是说,不要在数组上使用for..in
(除非它是稀疏的)。相反,请执行以下操作:
for( i=0, l=users.length; i<l; i++) {
alert(users[i].name);
}
for(i=0,l=users.length;i
语法
for (variable of object)
statement
参数
变量
-在每次迭代中,为变量分配不同属性的值
对象
-其可枚举属性被迭代的对象
这在大多数现代浏览器中都不受支持
您可能希望使用数组。
来完成您想要完成的任务
users.forEach(function(u) {
alert(u.name);
});
你在想什么
语法
for (variable of object)
statement
参数
变量
-在每次迭代中,为变量分配不同属性的值
对象
-其可枚举属性被迭代的对象
这在大多数现代浏览器中都不受支持
您可能希望使用数组。
来完成您想要完成的任务
users.forEach(function(u) {
alert(u.name);
});
试着做console.log(u)
试着做console.log(u)
你能详细解释一下为什么for..in
是一种不好的做法吗?@Wex:这有很好的信息:尤其是在用户中为(u)做时{
;每次执行循环时,u
将填充对象上存在的另一个属性的名称,直到返回所有属性。返回的属性既包括对象实例上存在的属性,也包括通过原型链继承的属性。包括原型链中的对象可能导致未执行预期的结果。@Wex:另请参见。说明
部分的底部有一条注释,说明为什么for..in不应用于迭代索引顺序很重要的数组。您能否详细说明为什么for..in
是一种不好的做法?@Wex:这有很好的信息:尤其是在执行for(u in用户)时{
;每次执行循环时,u
将填充对象上存在的另一个属性的名称,直到返回所有属性。返回的属性既包括对象实例上存在的属性,也包括通过原型链继承的属性。包括原型链中的对象可能导致未执行预期结果。@Wex:另请参见。说明
部分的底部有一条注释,说明为什么不应使用for..in来迭代索引顺序很重要的数组。