为什么数组中的var返回一个字符串索引?

这个问题在这里已经有了答案:

  • JavaScript的循环计数器出来作为字符串3答案

  • 我的朋友,看到原型继承的奇迹和诅咒。 你正在迭代for..in不是一个数组。 您正在遍历一个Array对象。 看看文档:

    数组索引只是具有整数名称的枚举属性,并且与其他常规对象属性相同。 不能保证for ... in将以任何特定顺序返回索引,并且它将返回所有可枚举的属性,包括具有非整数名称和那些被继承的属性。

    由于迭代顺序与实现相关,迭代数组可能无法以一致的顺序访问元素。 因此,在遍历访问顺序非常重要的数组上进行迭代时,最好使用带有数字索引(或Array.forEach或for ... of循环)的for循环。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

    所以你要处理的是数组对象中可枚举的“整数名称”属性,而不是数字顺序。

    在JavaScript中编辑 for v in array并不等同于Python for v in list中的for v in list 。 它相当于for k, v in dict.iteritems()但是k是以整数名字的形式隐含给你的,比如说“1”,“2”,“3”等等。从面向对象的角度来看也是直观的。 一个列表/数组如何成为一个类似于字典的对象? 但是从原型的角度来看,只要Object.prototype继承任何东西,它就可以被认为是一个带有键和属性的对象。

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

    上一篇: Why for var in array returns a string index?

    下一篇: Test for existence of nested JavaScript object key