Skip to content
do- edited this page Sep 22, 2024 · 3 revisions

Luhn — класс-наследник Check, вычисляющий контрольную сумму по алгоритму Луна.

Используется в реализации BankCard.

Конструктор

 const c = new Luhn (totalLength)

Поля

Имя Описание
totalLength Общее количество цифр в коде (valueLength + checkSumLength)
checkSumLength Количество цифр в контрольной сумме: 1
valueLength Количество цифр в коде за вычетом контрольной суммы
modulus1 10
isToDouble Boolean-значение, указывающее, следует ли удваивать следующее слагаемое

Методы

processDigit (pos, digit)

Прибавляет к накопленной сумме значение digit:

  • удвоенное при isToDouble
  • за вычетом 9 при превышении 9 и переключает isToDouble на обратное значение.

process (str)

В основном сводится к вызову родительского метода, но:

  • до него устанавливает isToDouble в значение для первой слева цифры (совпадает с чётностью totalLength)
  • после — подменяет this.sum на значение, полученное вычитанием из 10 последней цифры накопленной суммы (то есть, собственно, контрольное число Луна).
Clone this wiki locally