无法在javascript中对for循环内的值求和
我相信这是一个范围问题,但idk为什么它不起作用。 我对js相当陌生,尝试检查文档,但仍然无法解决它 出于某种原因,soma变量在For循环中始终记录为NaN。 Prob很简单,但我已经在桌子上敲了将近一个小时的头了。帮助D: 常数valid1=[4,5,3,9,6,7,7,9,0,8,0,1,6,8,0,8] //卢恩算法 validateCred=array=>{ 变量计数=0 var-soma=0 对于i=array.length;i!=-1;i-{ 如果计数===0{ 计数+=1 soma+=数组[i] }否则{ i阵列[i]*2>9{ soma+=数组[i]*2-9 }否则{ soma+=数组[i]*2 } 计数=0 } console.logsoma%10//预期输出===0 } } validateCredvalid1将i=array.length更改为i=array.length-1&在循环后移动console.log无法在javascript中对for循环内的值求和,javascript,Javascript,我相信这是一个范围问题,但idk为什么它不起作用。 我对js相当陌生,尝试检查文档,但仍然无法解决它 出于某种原因,soma变量在For循环中始终记录为NaN。 Prob很简单,但我已经在桌子上敲了将近一个小时的头了。帮助D: 常数valid1=[4,5,3,9,6,7,7,9,0,8,0,1,6,8,0,8] //卢恩算法 validateCred=array=>{ 变量计数=0 var-soma=0 对于i=array.length;i!=-1;i-{ 如果计数===0{ 计数+=1 so
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]
// Luhn Algorithm
validateCred = (array) => {
var count = 0
var soma = 0
for (i=array.length - 1; i != -1; i--) {
if (count === 0) {
count += 1
soma += array[i]
} else {
if(array[i]*2 > 9) {
soma += array[i]*2 - 9
} else {
soma += array[i]*2
}
count = 0
}
}
console.log(soma%10) // expected output === 0
}
validateCred(valid1)
数组的最后一项位于array.length-1位置,因为第一个元素位于0位置,这就是array[array.length]返回nan的原因。此外,您可能需要了解迭代数组的标准方法:array.foreach、array.filter、,array.reduce和array.map.i=array.length-这会使您在开始时超出数组的范围。数组索引从0开始,一直运行到Array.length-1。此外,控制台日志在循环内-您的期望是它在循环外。这是否回答了您的问题?数组[array.length]返回未定义的not NaN。另外,关于数组原型函数的部分可能有点误导。filter、.reduce和.map有特定的用法,它们不是for循环的替代品。而且它们都不包括。forEach以相反的顺序迭代。这是真的。