Введение
В этом лабе мы будем изучать реализацию алгоритма Луна на JavaScript. Алгоритм Луна обычно используется для проверки идентификационных номеров, таких как номера кредитных карт, IMEI номера и номера Национального идентификатора поставщиков. С помощью этого лабара вы научитесь разбивать строку, переворачивать массив, использовать методы map(), reduce() и shift() для реализации алгоритма Луна и, в конечном итоге, определять, является ли заданный идентификационный номер действительным или нет.
Проверка по алгоритму Луна
Для проверки идентификационных номеров, таких как номера кредитных карт, IMEI номера, номера Национального идентификатора поставщиков, с использованием алгоритма Луна, следуйте шагам:
- Откройте Терминал/SSH и введите
node, чтобы начать практиковаться в написании кода. - Используйте следующие методы:
String.prototype.split(),Array.prototype.reverse(),Array.prototype.map()иparseInt()в комбинации, чтобы получить массив цифр. - Используйте
Array.prototype.shift(), чтобы получить последнюю цифру. - Используйте
Array.prototype.reduce(), чтобы реализовать алгоритм Луна. - Возвращайте
true, еслиsumделится на10без остатка, и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;
};
Вы можете протестировать функцию проверки по алгоритму Луна с использованием следующих примеров:
luhnCheck("4485275742308327"); // true
luhnCheck(6011329933655299); // true
luhnCheck(123456789); // false
Резюме
Поздравляем! Вы завершили лабу по проверке по алгоритму Луна. Вы можете практиковаться в других лабах в LabEx, чтобы улучшить свои навыки.