Сравнение номера типа переменной с массивом с использованием indexOf в Javascript - PullRequest
0 голосов
/ 23 февраля 2019

Я добавил click прослушиватель событий для кнопки.Он вызывает кнопки YES И NO.В основном indexOf проверяет, находится ли значение в переменной foto в массиве yesMeetup или в массиве notMeetup.

Я пытался отладить, но всегда получаю "You has it" ион не вызывает отладчик, когда я нажимаю NO кнопку

let foto = Math.floor(Math.random() * 20) + 1;

document.querySelector('.btn').addEventListener('click', verify);

function verify() {
   var yesMeetup = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15];
   var notMeetup = [16, 17, 18, 19, 20];
   var notButton = document.getElementById('no');
   var yesButton = document.getElementById('yes');
   var decisao = document.getElementById('decisao');
   debugger;

   if (yesButton) {

        if (yesMeetup.indexOf(foto)) {
         decisao.textContent = "You got it";
      } else if (notMeetup.indexOf(foto)) {
         decisao.textContent = "wrong";
      }

   } else if (notButton) {

      if (notMeetup.indexOf(foto)) {
         decisao.textContent = "You Gou it";
      } else if (yesMeetup.indexOf(foto)) {
         decisao.textContent = "Wrong";
      }

   }
}

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы можете добавлять события нажатия на кнопки и проверять значения случайной величины.Как вы написали код, он всегда будет возвращать значения для обоих сценариев.В качестве альтернативы, чтобы проверить значения во время выполнения, вы можете использовать alert ().

0 голосов
/ 23 февраля 2019

Оператор if будет оценивать все, что передано ему как логическое значение.

Единственными значениями, для которых он не будет выполнять "истинную" ветвь, являются все ложные значения: 0, null, undefined, '', false, NaN.

Array.prototype.indexOf возвращает -1, когда элемент отсутствует в массиве, который не является одним из значений ложных значений и, следовательно,ваше if состояние

if (array.indexOf(element))

всегда будет оцениваться как истинное.

var example = [1,2,3];
if (example.indexOf(4)) {
  console.log('still true');
}

Вы можете использовать прямое сравнение с -1:

var example = [1,2,3];
if (example.indexOf(4) !== -1) {
  console.log('this is not logged');
}

Или более новый, немного чище, Array.prototype.includes:

var example = [1,2,3];
if (example.includes(4)) {
  console.log('this is not logged');
}
...