JSFiddle - React, Tailwind, and code Playground

by Andrey

JavaScript

document.addEventListener('DOMContentLoaded', askPromoCode());

function askPromoCode() {
  let isPromoCodeCorrect = false;
	let promoCode;
  while (!isPromoCodeCorrect) {
    promoCode = +prompt('Введите Промокод');
    isPromoCodeCorrect = validatePromoCode(promoCode);
  }
  
  createArrNum(promoCode);
}

function validatePromoCode (promoCode) {
	if (isNaN(promoCode)) {
  	validationErrorNotification("Вы ввели не число");
  	return false;
  }
  if (!promoCode) {
  	validationErrorNotification("Вы ничего не ввели");
  	return false;
  }
 
  if (numDigits(promoCode) < 8) {
  // todo: "Промокод состоит из 8 цифр", у тебя проверка только "если не меньше"
  // todo: "другие различные символы отличные от цифр недопустимы" проверь 1234567.8
  	validationErrorNotification("Вы ввели менее 8 символов");
  	return false;
  }
  return true;
}

function numDigits (promoCode) {
	return Math.max(Math.floor(Math.log10(Math.abs(promoCode))), 0) + 1;
}

function validationErrorNotification (error) {
	alert(error);
}


////////////////////////////////////////// Создаю массив из отдельных чисел

function createArrNum(number) {
  output = [];

  while (number) {
    output.push(number % 10);
    number = Math.floor(number / 10);
  }
  output.reverse();
  getResult(output);
}

////////////////////////////////////// Создаю отдельную функцию которая будет проверять все исходы и последовательности

function getResult(output) {
  /// Функция проверяет отношение кратных чисел к некратным
  function SumEvenOdds(output) {
    let sumEven = 0;
    let sumOdd = 0;
    for (let a = 0; a < output.length; a++) {
      if (output[a] % 2) {
        sumEven += output[a];
      } else {
        sumOdd += output[a];
      }
    }

    if (sumEven > sumOdd) {
      return false;
    } else {
      return true;
    }
  }

  /// Функция проверяет что пара значений идет последовательно по возрастанию

  function VerifCequence(output) {
    if (
      (output[0] < output[1] && output[4] < output[5]) ||
 ...