我正在用JavaScript写一个简单的for...in
循环,想知道为什么key
是字符串而不是数字吗?
为什么会这样,我可以将其更改为数字吗?
var array = ["a", "b", "c"];
for (var key in array) {
console.log(typeof key); //string
console.log(key + 1); //expected output : 01, 11, 21...
}
答案 0 :(得分:4)
这是一个字符串,因为JavaScript aren't really arrays at all¹中的标准数组是具有数组条目属性的对象,而对象属性名称(键)是字符串,符号或(soonish)私有名称。
默认情况下,您无法在for-in
中将其设置为数字,但可以将其转换为数字,或使用其他形式,例如标准for
或forEach
致电:
for (var key = 0; key < array.length; ++k) {
// ...
}
// ..or
array.forEach((entry, key) => {
// ...
});
使用for-in
遍历数组几乎总是一种反模式。请参阅my answer here,以详细了解用于遍历数组的各种选项。
¹这是我贫乏的小博客上的帖子。
答案 1 :(得分:3)
请注意,方括号表示法中的所有键都将转换为String类型,因为JavaScript中的 对象只能将String类型作为键类型 。
答案 2 :(得分:2)
对象属性名称始终是 字符串。
如果需要数字,请使用+
,parseInt
,JSON.parse
或任何其他标准方法将字符串转换为数字。
var array = ["a", "b", "c"];
for (var key in array) {
console.log(+key + 1);
}