gpt4 book ai didi

javascript - 在 JavaScript 中实现 Luhn 算法

转载 作者:行者123 更新时间:2023-11-30 06:35:23 25 4
gpt4 key购买 nike

我正在尝试将 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# 版本中运行良好,但现在我有疑问...提前致谢!

最佳答案

  <script>
// takes the form field value and returns true on valid number
function valid_credit_card(value) {
// accept only digits, dashes or spaces
if (/[^0-9-\s]+/.test(value)) return false;

// The Luhn Algorithm. It's so pretty.
var nCheck = 0, nDigit = 0, bEven = false;
value = value.replace(/\D/g, "");

for (var n = value.length - 1; n >= 0; n--) {
var cDigit = value.charAt(n),
nDigit = parseInt(cDigit, 10);

if (bEven) {
if ((nDigit *= 2) > 9) nDigit -= 9;
}

nCheck += nDigit;
bEven = !bEven;
}

return (nCheck % 10) == 0;
}

console.log(valid_credit_card("5610591081018250"),"valid_credit_card Validation");
</script>

最好的解决方案在这里

所有测试用例均通过

归功于

关于javascript - 在 JavaScript 中实现 Luhn 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com