Алгоритм Луна (также известный как Формула Луна ) полезен для проверки различных идентификационных номеров (например, номеров кредитных карт , IMEI ).
Я опускаю объяснение алгоритма, потому что он уже был раскрыт другими, но если вам нужна самая быстрая реализация Javascript , вы можете увидеть его здесь .
Проще говоря ...
function luhn(array) {
return function (number) {
let len = number ? number.length : 0,
bit = 1,
sum = 0;
while (len--) {
sum += !(bit ^= 1) ? parseInt(number[len], 10) : array[number[len]];
}
return sum % 10 === 0 && sum > 0;
};
}([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]);
Обратите внимание, что связанный источник написан на ES6 языке (также известном как JavaScript 2015), но передается на ES5 (см. index.js ) и его полностью протестирован.
Кроме того, его можно использовать как в браузерах , так и / или node.js .
Тесты производительности и другая реализация находятся на jsperf , чтобы проверить его высокую производительность.
Теперь, если вы просто хотите использовать его, возьмите код из связанного репозитория .
В противном случае установите его через bower ...
bower install luhn-alg
Или через npm ...
npm install luhn-alg
Отказ от ответственности: я являюсь автором пакета luhn-alg
.