使用for循环使用JavaScript打印数组中的值

时间:2019-07-15 00:31:45

标签: javascript node.js

我正在学习JavaScript,现在我正在尝试在Node中运行以下代码以在数组中显示值:

let array = [1, 2, 3];
for (let a in array) {
    console.log(a);
}

我希望以上代码将打印出1、2和3

但是,它会打印0、1、2。

谁能告诉我我的代码出了什么问题?

5 个答案:

答案 0 :(得分:0)

永远不要使用for/in来迭代数组。而且,当您这样做时,您只是在获取数组索引,而不是实际的数组元素。

for/in迭代对象的所有可枚举属性,而不仅仅是数组元素,这些元素最终可能包含您不想要的东西。有关详细信息,请参见for ... in loop with string array outputs indicesFor loop for HTMLCollection elements

相反,您可以使用许多其他选项。现代的方式可能是for/of,它适用于任何可迭代的(包括数组)。

用于

let array = [1, 2, 3];
for (let a of array) {
    console.log(a);
}

.forEach()

let array = [1, 2, 3];
array.forEach(function(a, index) {
    console.log(a);
});

纯属循环

let array = [1, 2, 3];
for (let i = 0; i < array.length; i++) {
    console.log(array[i]);
}

答案 1 :(得分:0)

TL; DR for..in语法捕获要迭代的对象的properties,而不是您期望的对象的values。 Mozilla开发人员网络是一个很好的资源,here对此进行了描述。

要获取的数组的属性是索引,要获取该值,您需要像这样使用数组索引运算符[]在数组上使用索引的属性。

let array = [1, 2, 3];
for (let a in array) {
    console.log(array[a]);
}

或者使用for..of语法来获取对象的值。

let array = [1, 2, 3];
for (let a of array) {
    console.log(a);
}

答案 2 :(得分:-1)

let array = [1, 2, 3];
for (let a in array) {
    console.log(array[a]);
}

答案 3 :(得分:-1)

let array = [1, 2, 3];
for (let a in array) {
    console.log("index:  " + a + ', ' + "value:  " + array[a]);

}

这些是从0开始的数组索引。如果需要这些值,则需要获取该索引处的值。

答案 4 :(得分:-1)

a是您的for in循环中的增量,因此array[a]将根据情况提供给您值。

仅供参考... 从技术上讲,在数组上使用for in循环是个坏主意,因为for in循环将属性接收为字符串,只是将数值作为数值将这些字符串转换为数字的数组。

var array = [1, 2, 3];
for(var i in array){
  console.log(typeof i);
}

我会做如下的数组循环:

var array = [1, 2, 3];
array.forEach(function(val, inc){
  console.log(typeof inc);
  console.log(val);
});
// or
console.log('-------');
for(var i=0,l=array.length; i<l; i++){
  console.log(array[i]);
  if(i === 1)break;
}
// in a function
console.log('-------');
var anotherArray = array.concat([4, 5, 6, 7, 8, 9]);
function breakBefore(array, breakBefore, startAt){
  var i = startAt === undefined ? 0 : startAt;
  for(l=array.length; i<l; i++){
    console.log('increment:'+i);
    console.log('value:'+array[i]);
    if(i === breakBefore){
      return;
    }
  }
}
breakBefore(anotherArray, 6, 2);