JavaScript的For-each/For-in循环更改元素类型
JavaScript的For-each/For-in循环更改元素类型
这个问题已经在这里有答案:
可能是重复问题:
我正在尝试使用for-in语法循环遍历一个数字数组。问题是,这些数字被转换为字符串。
for(var element in [0]) { document.write(typeof(element)); // outputs "string" }
这是标准行为吗?我可以想到一堆方法来解决它,但我真正想要的是解释,以扩展我对JavaScript的理解。
admin 更改状态以发布 2023年5月24日
我觉得你误解了JavaScript中for...in
的作用。它并不是迭代数组元素,而是迭代对象属性。JavaScript中的对象类似于其他语言中的字典或哈希表,但由字符串作为键。特别是,数组被实现为具有整数属性的对象,整数的范围是从0
到N-1
- 但是,由于所有属性名都是字符串,因此,深入底层,索引也是字符串。
现在,让我们举个与[0]
稍有不同的例子,因为这里的索引与值相一致。我们讨论的是[2]
。
因此,如果我们忽略从Array
继承的内容,[2]
与{ "0": 2 }
几乎是一样的。
for..in
将迭代属性名称,这将获取"0"
,而不是2
。
现在,你会问如何迭代Array
。一般的方法是:
var arrayLen = array.length; for (var i = 0; i < arrayLen; i++) { var el = array[i]; // ... }