JavaScript的

可能重复:
JavaScript“For ... in”与数组

我试图使用for-in语法来遍历数组。 问题是,这些数字正在转换为字符串。

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

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


我想你误解了JavaScript for...in作用。 它不会迭代数组元素。 它遍历对象属性。 JavaScript中的对象与其他语言中的字典或哈希类似,但是由字符串键入。 特别是数组实现为具有从0N-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是属性的名称,并且总是一个字符串。

链接地址: http://www.djcxy.com/p/70019.html

上一篇: JavaScript For

下一篇: Looping through a JSON Array gives "undefined" results