【问题标题】:JavaScript For-each/For-in loop changing element types [duplicate]JavaScript For-each / For-in循环更改元素类型[重复]
【发布时间】:2011-08-31 09:41:15
【问题描述】:

可能重复:
JavaScript “For …in” with Arrays

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

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

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

【问题讨论】:

    标签: javascript foreach for-in-loop


    【解决方案1】:

    for-in 语句枚举对象的属性。在您的情况下,element 是属性的名称,它始终是一个字符串。

    【讨论】:

      【解决方案2】:

      我认为你误解了 JavaScript for...in 的作用。它不会遍历数组元素。它迭代对象属性。 JavaScript 中的对象有点像其他语言中的字典或散列,但以字符串为键。特别是数组被实现为具有从0N-1 的整数属性的对象 - 但是,由于所有属性名称都是字符串,因此索引也是如此,深入人心。

      现在让我们举一个与[0] 不同的例子,因为这里的索引与值一致。让我们讨论一下[2]

      因此,[2] 是,如果我们忽略从Array 继承的东西,则与{ "0": 2 } 几乎相同。

      for..in 将遍历属性 names,它将获取 "0",而不是 2

      现在,你问如何迭代Arrays?通常的方式是:

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

      【讨论】:

      • 感谢您的解释。这正是我想要的。
      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2015-10-02
      • 2011-07-12
      • 1970-01-01
      • 2015-11-12
      相关资源
      最近更新 更多