JavaScript For-each/For-in 循环改变元素类型[重复]

2024-04-30

可能的重复:
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(使用前将#替换为@)

JavaScript For-each/For-in 循环改变元素类型[重复] 的相关文章

随机推荐