可能的重复:
JavaScript 对数组的“For …in” https://stackoverflow.com/questions/500504/javascript-for-in-with-arrays
我正在尝试使用 for-in 语法来循环遍历数字数组。问题是,这些数字正在转换为字符串。
for(var element in [0]) {
document.write(typeof(element)); // outputs "string"
}
这是标准行为吗?我可以想出很多方法来解决它,但我实际上只是在寻找解释,以扩展我对 JavaScript 的理解。
我认为你误解了 JavaScriptfor...in
做。它不会迭代数组元素。它迭代对象属性。 JavaScript 中的对象有点像其他语言中的字典或哈希,但由字符串作为键控。特别是,数组被实现为对象,其属性是来自以下的整数:0
to N-1
- 但是,由于所有属性名称都是字符串,因此深层索引也是字符串。
现在让我们举一个有点不同的例子[0]
,因为这里的索引与值一致。来!我们讨论一下[2]
反而。
Thus, [2]
就是,如果我们忽略我们继承的东西Array
,几乎与{ "0": 2 }
.
for..in
将迭代属性names,这将拾取"0"
,不是2
.
现在,如何迭代Array
那么,你会问吗?通常的方法是:
var arrayLen = array.length;
for (var i = 0; i < arrayLen; i++) {
var el = array[i];
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)