Luhnアルゴリズム
by yshrkn
JavaScript
/*
* Luhnアルゴリズム
*/
function checkCardNumber(cardNumber) {
var _cardNumber = cardNumber;
var reversedNumber;
var allNumbersAddedResult = 0; //Luhnアルゴリズムを用いた、各桁の計算結果
// 数値を反転
for (var i = 0, len = String(_cardNumber).length; i <= len; i++) {
reversedNumber += String(_cardNumber).substr((len - i), 1);
}
for (var i = 1; i <= len; i++) {
var targetNumber = String(_cardNumber).substr((len - i), 1);
// 偶数番目の場合は、targetNumberを2倍にする
if (i % 2 === 0) {
targetNumber *= 2;
// 2倍した結果が2桁であれば、それぞれの位を足す
if (String(targetNumber).length === 2) {
targetNumber = Number(String(targetNumber).charAt(0)) + Number(String(targetNumber).charAt(1));
}
}
allNumbersAddedResult += Number(targetNumber);
}
console.log("Luhnアルゴリズムを用いた各桁の計算結果:",allNumbersAddedResult);
return allNumbersAddedResult % 10 === 0;
}
console.log(checkCardNumber(49927398716));
console.log(checkCardNumber(49927498716));
console.log(checkCardNumber(19547));
console.log(checkCardNumber(19548));