2

C#にあるLuhmアルゴリズムの実装をJavaScriptに移植しようとしています。私はそれを移植して、それが機能していると思いましたが、正当なカードを検証することができません。私のAMEXは正常に検証されますが、私の2つのVISAはそうすることを拒否します。コードは次のとおりです。

luhn = function (number) {
    var _deltas = [0, 1, 2, 3, 4, -4, -3, -2, -1, 0],
        _checksum = 0,
        _digits = [],
        i,
        j;

    while (number != 0) {
        _digits.push(parseInt((number % 10), 10));

        number = parseInt((number / 10), 10);
    }

    for (i = (_digits.length - 1), j = _digits.length; i > -1; i--) {
        _digit = _digits[i];
        _checksum += _digit;
        _checksum += ((((i - j) % 2) === 0) ? _deltas[_digit] : 0);
    }

    return ((_checksum % 10) === 0);
};

誰かが私に何が悪いのか正しい方向に向けることができますか?これはC#バージョンでは問題なく機能すると思いましたが、今は疑問があります...よろしくお願いします。

4

3 に答える 3