[英]can't sum values inside a for loop in javascript
我相信這是一個 scope 問題,但我不知道為什么它不起作用。 我對js還很陌生,嘗試檢查文檔但仍然無法解決
出於某種原因,“soma”變量在 for 循環內始終記錄為“NaN”。 Prob 很簡單,但我已經將頭撞在桌子上將近一個小時了。 求助丁:
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; 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)
將i=array.length
更改為i=array.length - 1
並在循環后移動您的 console.log
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 position 中,因為第一個元素在 0 position 中,這就是 array[array.length] 返回 nan 的原因。此外,您可能還想閱讀有關迭代的標准方法數組:array.foreach()、array.filter()、array.reduce 和 array.map()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.