Как я могу получить следующую контрольную цифру, используя алгоритм Луна в JavaScript

У меня есть следующий код, который проверяет, если определенные цифры действительны с использованием модуля 10 алгоритма Луна.

function isCheckdigitCorrect(value) {
// accept only digits, dashes or spaces
  if (/[^0-9-\s]+/.test(value)) return false;

  var nCheck = 0, nDigit = 0, bEven = false;
  value = value.replace(/\D/g, "");

  for (var n = value.length - 1; n >= 0; n--) {
    var cDigit = value.charAt(n),
      nDigit = parseInt(cDigit, 10);

    if (bEven) {
      if ((nDigit *= 2) > 9) nDigit -= 9;
    }

    nCheck += nDigit;
    bEven = !bEven;
  }

  return (nCheck % 10) == 0;
}

Мне нужна другая функция, которая генерирует следующую контрольную цифру, фактически давая четырехзначное число, чтобы 5-ая цифра была следующей контрольной суммой.

1 ответ

Решение

Изменив текущую функцию на эту, я смог получить следующую контрольную цифру:

function getCheckDigit(value) {
  if (/[^0-9-\s]+/.test(value)) return false;

  var nCheck = 0, nDigit = 0, bEven = true;
  value = value.replace(/\D/g, "");

  for (var n = value.length - 1; n >= 0; n--) {
    var cDigit = value.charAt(n),
      nDigit = parseInt(cDigit, 10);

    if (bEven) {
      if ((nDigit *= 2) > 9) nDigit -= 9;
    }

    nCheck += nDigit;
    bEven = !bEven;
  }
  return (1000 - nCheck) % 10;
}
Другие вопросы по тегам