JavaScript For-each/For-in循环更改元素类型

Ish*_*now 2 javascript foreach for-in-loop

可能重复:
JavaScript"For ... in"with Arrays

我正在尝试使用for-in语法循环遍历数组.问题是,这些数字正在转换为字符串.

for(var element in [0]) {
    document.write(typeof(element)); // outputs "string"
}
Run Code Online (Sandbox Code Playgroud)

这是标准行为吗?我可以想出一些解决它的方法,但我真的只是在寻找解释,以扩展我对JavaScript的理解.

Ama*_*dan 5

我想你误解了JavaScript的for...in作用.它不会迭代数组元素.它迭代对象属性.JavaScript中的对象有点像其他语言中的字典或哈希,但是用字符串键入.特别是数组实现为具有从中0到整数的属性的对象N-1- 但是,由于所有属性名称都是字符串,所以索引也是内向的.

现在让我们采取一些不同的例子[0],因为这里索引与值一致.让我们来讨论一下[2].

因此,[2]是,如果我们忽略我们继承的东西Array,几乎是一样的{ "0": 2 }.

for..in将迭代属性名称,这将获取"0",而不是2.

Array你问,现在,如何迭代s然后呢?通常的方法是:

var arrayLen = array.length;
for (var i = 0; i < arrayLen; i++) {
  var el = array[i];
  // ...
}
Run Code Online (Sandbox Code Playgroud)