Я хочу найти совпадающие номера из введенных пользователем номеров и сгенерированных номеров и выделить совпадения

#javascript #arrays #numbers #match

Вопрос:

Я хочу найти совпадающие номера из введенных пользователем номеров и сгенерированных номеров и выделить совпадения. Но проблема в том, что когда генерируются числа, они совпадают с позицией номера пользователя и выделяют его. Вот так оно и есть.

номера пользователей 1 2 3 4 5 6 (соответствующие номера выделены)

сгенерированные числа 4 10 8 1 7 9

изображение ошибки:

изображение ошибки

 var userNumber1 = "displayUserNum1";
var userNumber2 = "displayUserNum2";
var userNumber3 = "displayUserNum3";
var userNumber4 = "displayUserNum4";
var userNumber5 = "displayUserNum5";
var userNumber6 = "displayUserNum6";

var lotteryNumber1 = "firstLotteryNum";
var lotteryNumber2 = "secondLotteryNum";
var lotteryNumber3 = "thirdLotteryNum";
var lotteryNumber4 = "fourthLotteryNum";
var lotteryNumber5 = "fifthLotteryNum";
var lotteryNumber6 = "sixthLotteryNum";
var lotteryNumber7 = "seventhLotteryNum";

var displayUserNum1 = window.prompt("Enter your first Number");
document.getElementById("displayUserNum1").innerHTML = displayUserNum1;

var displayUserNum2 = window.prompt("Enter your second Number");
document.getElementById("displayUserNum2").innerHTML = displayUserNum2;

var displayUserNum3 = window.prompt("Enter your third Number");
document.getElementById("displayUserNum3").innerHTML = displayUserNum3;

var displayUserNum4 = window.prompt("Enter your fourth Number");
document.getElementById("displayUserNum4").innerHTML = displayUserNum4;

var displayUserNum5 = window.prompt("Enter your fifth Number");
document.getElementById("displayUserNum5").innerHTML = displayUserNum5;

var displayUserNum6 = window.prompt("Enter your sixth Number");
document.getElementById("displayUserNum6").innerHTML = displayUserNum6;

lotteryNumber1 = Math.floor(Math.random() * 10)   1;
lotteryNumber2 = Math.floor(Math.random() * 10)   1;
lotteryNumber3 = Math.floor(Math.random() * 10)   1;
lotteryNumber4 = Math.floor(Math.random() * 10)   1;
lotteryNumber5 = Math.floor(Math.random() * 10)   1;
lotteryNumber6 = Math.floor(Math.random() * 10)   1;
lotteryNumber7 = Math.floor(Math.random() * 10)   1;

document.getElementById("draw1").innerHTML = lotteryNumber1;
document.getElementById("draw2").innerHTML = lotteryNumber2;
document.getElementById("draw3").innerHTML = lotteryNumber3;
document.getElementById("draw4").innerHTML = lotteryNumber4;
document.getElementById("draw5").innerHTML = lotteryNumber5;
document.getElementById("draw6").innerHTML = lotteryNumber6;
document.getElementById("bonus").innerHTML = lotteryNumber7;

document.getElementById("bonus").classList.add("highlightBonus");

if ("displayUserNum1".match(lotteryNumber7)) {
  document.getElementById("displayUserNum1").classList.add("highlightBonusWin");
} else if ("displayUserNum2".match(lotteryNumber7)) {
  document.getElementById("displayUserNum2").classList.add("highlightBonusWin");
}

if ("displayUserNum3".match(lotteryNumber7)) {
  document.getElementById("displayUserNum3").classList.add("highghtBonusWin");
} else if ("displayUserNum4".match(lotteryNumber7)) {
  document.getElementById("displayUserNum4").classList.add("highlightBonusWin");
}

if ("displayUserNum5".match(lotteryNumber7)) {
  document.getElementById("displayUserNum5").classList.add("highghtBonusWin");
} else if ("displayUserNum6".match(lotteryNumber7)) {
  document.getElementById("displayUserNum6").classList.add("highlightBonusWin");
}

if ("displayUserNum1".match(lotteryNumber1)) {
  document.getElementById("displayUserNum1").classList.add("highlightWin");
} else if ("displayUserNum2".match(lotteryNumber2)) {
  document.getElementById("displayUserNum2").classList.add("highlightWin");
}

if ("displayUserNum3".match(lotteryNumber3)) {
  document.getElementById("displayUserNum3").classList.add("highlightWin");
} else if ("displayUserNum4".match(lotteryNumber4)) {
  document.getElementById("displayUserNum4").classList.add("highlightWin");
}

if ("displayUserNum5".match(lotteryNumber5)) {
  document.getElementById("displayUserNum5").classList.add("highlightWin");
} else if ("displayUserNum6".match(lotteryNumber6)) {
  document.getElementById("displayUserNum6").classList.add("highlightWin");
}

const d = new Date();
document.getElementById("lmd").innerHTML = d; 

Комментарии:

1. извините за ошибку, она была исправлена..

Ответ №1:

Используйте массивы, а не множество отдельных переменных. Затем вы можете избавиться от всего дубликата кода с помощью циклов. И вы можете проверить, находится ли каждый пользовательский ввод в массиве лотерейных номеров, используя этот includes() метод.

 let userNumbers = [];
for (let i = 1; i <= 6; i  ) {
  let userNum = parseInt(window.prompt(`Enter number ${i}`));
  userNumbers.push(userNum);
  document.getElementById(`displayUserNum${i}`).innerHTML = userNum;
}

let lotteryNumbers = [];
for (let i = 1; i <= 6; i  ) {
  let lotteryNumber = Math.floor(Math.random() * 10)   1;
  lotteryNumbers.push(lotteryNumber);
  document.getElementById(`draw${i}`).innerHTML = lotteryNumber;
}

document.getElementById("bonus").classList.add("highlightBonus");

for (let i = 0; i < 6; i  ) {
  if (lotteryNumbers.includes(userNumbers[i])) {
    document.getElementById(`displayUserNum${i 1}`).classList.add("highlightBonusWin");
  }
}

const d = new Date();
document.getElementById("lmd").innerHTML = d;