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#バージョンでは問題なく機能すると思いましたが、今は疑問があります...よろしくお願いします。