为什么Array的索引是以下代码中的字符串?

时间:2018-03-13 07:07:41

标签: javascript arrays string indexing

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中这些数组索引被视为字符串?

6 个答案:

答案 0 :(得分:3)

来自MDN for...in

  

注意: 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)

参考MDN FOR..IN

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的值将始终返回这些属性的名称。在数组中,这些是索引的名称。

此外,StringNumber等于String,这是console中打印的内容。