Реализация алгоритма Луна на JavaScript

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом лабе мы будем изучать реализацию алгоритма Луна на JavaScript. Алгоритм Луна обычно используется для проверки идентификационных номеров, таких как номера кредитных карт, IMEI номера и номера Национального идентификатора поставщиков. С помощью этого лабара вы научитесь разбивать строку, переворачивать массив, использовать методы map(), reduce() и shift() для реализации алгоритма Луна и, в конечном итоге, определять, является ли заданный идентификационный номер действительным или нет.

Проверка по алгоритму Луна

Для проверки идентификационных номеров, таких как номера кредитных карт, IMEI номера, номера Национального идентификатора поставщиков, с использованием алгоритма Луна, следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте следующие методы: String.prototype.split(), Array.prototype.reverse(), Array.prototype.map() и parseInt() в комбинации, чтобы получить массив цифр.
  3. Используйте Array.prototype.shift(), чтобы получить последнюю цифру.
  4. Используйте Array.prototype.reduce(), чтобы реализовать алгоритм Луна.
  5. Возвращайте 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, чтобы улучшить свои навыки.