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

使用for循环使用JavaScript打印数组中的值,javascript,node.js,Javascript,Node.js,我正在学习JavaScript,现在我正在尝试在Node中运行以下代码以显示数组中的值: let array = [1, 2, 3]; for (let a in array) { console.log(a); } 我希望上面的代码将打印1、2和3 但是,它打印0、1、2 有人能告诉我我的代码出了什么问题吗? let array = [1, 2, 3]; for (let a in array) { console.log(array[a]); } 设数组=[1,2,3];

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

let array = [1, 2, 3];
for (let a in array) {
    console.log(a);
}
我希望上面的代码将打印1、2和3

但是,它打印0、1、2

有人能告诉我我的代码出了什么问题吗?

let array = [1, 2, 3];
for (let a in array) {
    console.log(array[a]);
}
设数组=[1,2,3]; 对于数组中的let{ console.logindex:+a+','+value:+array[a]; } 设数组=[1,2,3]; 对于数组中的let{ console.logindex:+a+','+value:+array[a]; } 决不应使用for/in来迭代数组。当你这样做的时候,你只是得到数组索引,而不是实际的数组元素

for/in迭代对象的所有可枚举属性,而不仅仅是数组元素,数组元素最终可能包含您不想要的内容。有关详细信息,请参阅和

相反,您可以使用任意数量的其他选项。现代方法可能适用于包含数组的任何iterable

对于/对于

弗雷奇先生

普通for循环

决不应使用for/in来迭代数组。当你这样做的时候,你只是得到数组索引,而不是实际的数组元素

for/in迭代对象的所有可枚举属性,而不仅仅是数组元素,数组元素最终可能包含您不想要的内容。有关详细信息,请参阅和

相反,您可以使用任意数量的其他选项。现代方法可能适用于包含数组的任何iterable

对于/对于

弗雷奇先生

普通for循环

TL;DR:for..in语法获取您迭代的对象的属性,而不是您期望的对象的值。Mozilla开发者网络是一个很好的资源,本文对此进行了描述

要获取的数组的属性是索引,要获取所需的值,需要使用数组索引操作符[]在数组上使用索引属性,如下所示

设数组=[1,2,3]; 对于数组中的let{ console.logarray[a]; } TL;DR:for..in语法获取您迭代的对象的属性,而不是您期望的对象的值。Mozilla开发者网络是一个很好的资源,本文对此进行了描述

要获取的数组的属性是索引,要获取所需的值,需要使用数组索引操作符[]在数组上使用索引属性,如下所示

设数组=[1,2,3]; 对于数组中的let{ console.logarray[a]; } a是for-in循环中的增量,因此数组[a]将为您提供案例中的值

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

var数组=[1,2,3]; 数组中的forvari{ console.logtypeof i; } a是for-in循环中的增量,因此数组[a]将为您提供案例中的值

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

var数组=[1,2,3]; 数组中的forvari{ console.logtypeof i;
}console.logarray[a]。a是增量。不过,我不建议在数组上使用for-in循环。使用array.forEachfunctionvalue、increment{},或者如果您想中断它,则只使用常规for循环,以加快执行速度。在forEach循环中,值将具有您的值,而不需要数组[increment]。我现在可以获得正确的输出。因此a实际上是数组的索引。将in替换为of。in是用来迭代对象的键,of是用来迭代一个变量的值。对于初学者来说,这是一个非常好的问题,学习答案,干得好!console.logarray[a]。a是增量。不过,我不建议在数组上使用for-in循环。使用array.forEachfunctionvalue、increment{},或者如果您想中断它,则只使用常规for循环,以加快执行速度。在forEach循环中,值将具有您的值,而不需要数组[increment]。我现在可以获得正确的输出。因此a实际上是数组的索引。将in替换为of。in是用来迭代对象的键,of是用来迭代一个变量的值。对于初学者来说,这是一个非常好的问题,学习答案,干得好!您永远不应该使用for/in来迭代数组,因为它迭代所有可枚举属性,而不仅仅是数组元素。使用for/of或.forEach或常规for循环。绝对不要使用for/in来迭代数组,因为它迭代所有可枚举属性,而不仅仅是数组元素。使用for/of或.forEach或常规for循环。绝对不要使用for/in来迭代数组,因为它迭代所有可枚举属性,而不仅仅是数组元素。使用for/of或.forEach或常规for循环。只是对const[key,value]好奇而已
Object.entriesarray{console.logindex:+key+:+value:+value;}的。可以用于对象和数组的?你什么时候会使用它?我不认为我会在数组中使用它,因为它还包括可枚举属性,而不仅仅是数组元素。不过,对于迭代对象的属性来说效果很好。如果我想为数组同时使用index和item,我会使用.forEach或数组的let[index,value]或常规for循环。您永远不应该使用for/in来迭代数组,因为这会迭代所有可枚举属性,而不仅仅是数组元素。使用for/of或.forEach或常规for循环。对于Object.entriesarray{console.logindex:+key+:+value:+value;}的const[key,value]来说,只是好奇而已。可以用于对象和数组的?你什么时候会使用它?我不认为我会在数组中使用它,因为它还包括可枚举属性,而不仅仅是数组元素。不过,对于迭代对象的属性来说效果很好。如果我想为数组同时使用索引和项,我会使用.forEach或数组的let[index,value]或常规for循环。
let array = [1, 2, 3];
for (let a of array) {
    console.log(a);
}
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]);
}