var myArr = [{a:1, b:2}, {c:3, d:4}];
for (var item in myArr) {
console.log(item);
}
Run Code Online (Sandbox Code Playgroud)
Item返回键(例如:0,1)而不是对象本身.为什么?
sgo*_*les 36
道格拉斯克罗克福德建议在JavaScript:好的部分 避免使用该for in声明.
如果您使用for in循环对象中的属性名称,则不会对结果进行排序.
该for in循环是最好的用于遍历名称-值对,并且for each环路最好用于遍历值,即阵列.
例如,
var o = {'name':'Batman', 'age':33, 'city':'Gotham City'};
for (var p in o) {
console.log(p+': '+o[p]);
}
Run Code Online (Sandbox Code Playgroud)
如果我们要为上面的对象使用For Each Loop,我们就无法获得属性名称.
注意 :
pom*_*meh 22
Javascript for.. in循环总是返回索引/名称,而不是值.为了得到你想要的,你应该使用:
var myArr = [{a:1, b:2}, {c:3, d:4}];
for (var index in myArr) {
console.log( myArr[index] );
}
Run Code Online (Sandbox Code Playgroud)
但是,如前所述,应谨慎使用for.. in语句,并且不应与数组一起使用.你应该使用for循环代替
var myArr = [{a:1, b:2}, {c:3, d:4}];
for( var i=0, l=myArr.length; i<l; i++ ) {
console.log( myArr[i] );
}
Run Code Online (Sandbox Code Playgroud)