我正在尝试将我在 C# 中的 Luhm 算法实现移植到 JavaScript。我把它移植过来了,我认为它可以工作,但我无法获得合法的卡来验证。我的 AMEX 验证很好,但我的两个 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# 版本中运行良好,但现在我有疑问......提前谢谢!