我有一个js脚本。
我想提醒数组中的每个数字。
但它总是从0开始显示,而不是实际数字。
var indexes = [1,2]
arrayOfDigits = indexes.map(Number);
var i = 0;
for (i in arrayOfDigits)
{
alert(i);
}
它先向0发出警报,然后向1发出警报。但我想要1然后2
您的代码有很多问题,让我们来看看:
-
for...in
用于迭代对象自己的可枚举属性,而不是迭代数组成员。您需要for...of
。 -
不要再使用
var
,除非您明确知道并需要它的特殊作用域行为。请改用const
,或者使用let
,以防您需要为其分配多次。 -
您的代码有一个未声明的变量,该变量会自动使其成为全局变量。不污染全局命名空间是普遍的共识。使用前始终声明任何变量。
-
不要在循环之外初始化甚至声明
for...of
循环的循环变量。这是在for (const digit of arrayOfDigits)
构造本身中正确完成的。 -
不要使用
alert
进行调试;请改用console.log
。
以下是正在工作的、已更正的代码:
const indexes = [1, 2]
const arrayOfDigits = indexes.map(Number);
for (const digit of arrayOfDigits) {
console.log(digit);
}
如果您希望输出为1和2,请使用此安装的
var indexes = [1,2]
arrayOfDigits = indexes.map(Number);
for (var i = 0;i<arrayOfDigits.length;i++)
{
alert(arrayOfDigits[i]);
}
for循环遍历对象的所有属性(包括来自其原型链的属性(。你只需要对它进行迭代。为此,你可以使用For of循环(在元素上循环(,也可以使用Array#forEach
,它可以做到这一点,但可以帮助你访问其他东西,比如索引:
indexes.forEach(number => {
alert(number);
});