Skip to content

Instantly share code, notes, and snippets.

@kaungmyatlwin
Last active June 5, 2023 11:11
Show Gist options
  • Save kaungmyatlwin/80e92d5d452d6034ce11e467b6cc629d to your computer and use it in GitHub Desktop.
Save kaungmyatlwin/80e92d5d452d6034ce11e467b6cc629d to your computer and use it in GitHub Desktop.
Card validation (Luhn's Algorithm) in Javascript
function validateCard(digitLength, cardVal){
var reverseDigits = cardVal
.substring(0, digitLength - 1)
.split('')
.reverse();
var lastDigit = Number(cardVal.substring(digitLength - 1, digitLength));
var reducedDigits = [];
var normalDigits = [];
for(var i = 0, j = Math.ceil(reverseDigits.length / 2); i < j; i++) {
var digit = reverseDigits[i * 2] * 2;
digit > 9 ?
reducedDigits.push(digit - 9)
:
reducedDigits.push(digit);
}
for(var i = 0, j = reverseDigits.length; i < j; i ++) {
if(i % 2 === 1) {
normalDigits.push(parseInt(reverseDigits[i]));
}
}
var total = reducedDigits
.concat(normalDigits)
.reduce((sum, value) => sum + value) + lastDigit;
return total % 10 === 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment