实现Luhn 算法,用于验证各种识别号码,例如信用卡号码、IMEI 号码、国家提供商标识符号码等。
使用String.prototype.split(),Array.prototype.reverse()和 Array.prototype.map() 结合parseInt()获得数字数组。
用Array.prototype.shift()获取最后一位数字。
用Array.prototype.reduce()实现 Luhn 算法。
如果sum能被 10 整除返回 true ,否则返回 false。
const luhnCheck = num => {
const arr = (num + '')
.split('')
.reverse()
.map(x => parseInt(x));
const lastDigit = arr.shift();
let sum = arr.reduce(
(acc, val, i) => (i % 2 !== 0 ? acc + val : acc + ((val *= 2) > 9 ? val - 9 : val)),
0
);
sum += lastDigit;
return sum % 10 === 0;
};
更多内容请访问:https://www.icoderoad.com