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

新手上路,请多包涵

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

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

我希望上面的代码将打印 1、2 和 3

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

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

原文由 Kelvin Ho 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 374
2 个回答

您永远不应该使用 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);
});

普通for循环

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

原文由 jfriend00 发布,翻译遵循 CC BY-SA 4.0 许可协议

TL;DRfor..in 语法抓住了你迭代的对象的 properties values . Mozilla Developer Network 是一个很好的资源, 此处 对其进行了描述。

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

 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);
}

原文由 Dalton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题