var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index in arrayOfNumbers){
console.log(index+1);
}
此示例代码的输出为。
01
11个
21个
31个
41个
51个
61个
为什么在Javascript中这些数组索引被视为字符串?
答案 0 :(得分:3)
注意: for ... in不应该用于迭代索引顺序很重要的数组。
... for ... in循环语句将返回所有可枚举属性, 包括具有非整数名称和继承名称的那些。
当使用for ...时,key始终是一个字符串,它所做的只是字符串连接。
你有一个数组,所以最好使用Array.foreach(),如下所示:
var arrayOfNumbers=[1,2,3,4,5,6,78];
arrayOfNumbers.forEach(function(item, index){
console.log(index + 1); // here the index is a number!
});

答案 1 :(得分:0)
键是字符串,因为它是和object.In java脚本中有对象,这就是为什么它的键在字符串中。
您可以通过将字符串转换为int或添加前缀+。
来实现此目的var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index in arrayOfNumbers) {
var v = parseInt(index) + 1;
console.log(v);
}
使用前缀
var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index in arrayOfNumbers) {
var v = parseInt(index) + 1;
console.log(v);
}
var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index in arrayOfNumbers){
var v = +index + 1;
console.log(v);
}
答案 2 :(得分:0)
//不要用于for for数组 // for for意味着当您使用数组尝试遍历对象时,它看起来像这样
arr={
"0":1,
"1":2,
"2":3,
"3":4,
"4":5,
"5":6,
"6":78
}
//我希望你正在寻找这个
var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index=0;index<arrayOfNumbers.length;index++){
console.log(index+1);
}
答案 3 :(得分:0)
for ... in语句迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。
var string1 = "";
var object1 = {a: 1, b: 2, c: 3};
for (var property1 in object1) {
string1 = string1 + object1[property1];
}
console.log(string1);
在你的Case中,索引被称为对象键,它是t字符串或键字符串:{ foo : 'something in universe'}
如果您想要密钥的值
,请查看此处
var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index in arrayOfNumbers){
console.log(arrayOfNumbers[index+1]);
}
console.log(arrayOfNumbers)
答案 4 :(得分:0)
正如评论和一些答案中所述,for循环用于对象迭代,而在javascript中,数组也是对象。所以键将是字符串类型。 但是,对于您的预期结果,您可以使用以下内容:
var arrayOfNumbers=[1,2,3,4,5,6,78];
arrayOfNumbers.forEach(function(num)
{
console.log(num+1);
});
答案 5 :(得分:0)
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
for ... in语句迭代对象的可枚举属性。
因此,代码中index
的值将始终返回这些属性的名称。在数组中,这些是索引的名称。
此外,String
加Number
等于String
,这是console
中打印的内容。