为什么在...中键入一个字符串

时间:2019-01-28 11:44:09

标签: javascript for-loop

我正在用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...
}

3 个答案:

答案 0 :(得分:4)

这是一个字符串,因为JavaScript aren't really arrays at all¹中的标准数组是具有数组条目属性的对象,而对象属性名称(键)是字符串,符号或(soonish)私有名称。

默认情况下,您无法在for-in中将其设置为数字,但可以将其转换为数字,或使用其他形式,例如标准forforEach致电:

for (var key = 0; key < array.length; ++k) {
    // ...
}
// ..or
array.forEach((entry, key) => {
    // ...
});

使用for-in遍历数组几乎总是一种反模式。请参阅my answer here,以详细了解用于遍历数组的各种选项。


¹这是我贫乏的小博客上的帖子。

答案 1 :(得分:3)

Objects and properties

  

请注意,方括号表示法中的所有键都将转换为String类型,因为JavaScript中的 对象只能将String类型作为键类型

答案 2 :(得分:2)

对象属性名称始终是 字符串。

如果需要数字,请使用+parseIntJSON.parse或任何其他标准方法将字符串转换为数字。

var array = ["a", "b", "c"];

for (var key in array) {
  console.log(+key + 1);
}