簡體   English   中英

無法對 javascript 中的 for 循環內的值求和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM