JavaScript的
可能重复:
JavaScript“For ... in”与数组
我试图使用for-in语法来遍历数组。 问题是,这些数字正在转换为字符串。
for(var element in [0]) {
document.write(typeof(element)); // outputs "string"
}
这是标准行为吗? 我可以想出一些方法来解决它,但我只是在寻找解释,以扩展我对JavaScript的理解。
我想你误解了JavaScript for...in
作用。 它不会迭代数组元素。 它遍历对象属性。 JavaScript中的对象与其他语言中的字典或哈希类似,但是由字符串键入。 特别是数组实现为具有从0
到N-1
整数的属性的对象 - 但是,由于所有属性名都是字符串,所以索引是深入的。
现在我们来看一个与[0]
不同的示例,因为这里的索引与值相符。 让我们来讨论[2]
。
因此, [2]
是,如果我们忽略了我们从Array
继承的东西,几乎与{ "0": 2 }
。
for..in
将迭代属性名称,它将拾取"0"
,而不是2
。
现在,如何迭代Array
然后,你问? 通常的方法是:
var arrayLen = array.length;
for (var i = 0; i < arrayLen; i++) {
var el = array[i];
// ...
}
这是重复的为什么使用“for ... in”与数组迭代是一个坏主意?
for-in
语句枚举了一个对象的属性。 在你的case中, element
是属性的名称,并且总是一个字符串。
上一篇: JavaScript For