Javascript Switch to if-else

329
01 мая 2017, 02:53

Помогите поменять форму Switch на if-else: я сделал скрипт чтоб компьютер создал четыре цифры рандомно(от 1 до 9) и добавил их в массив arr потом в <input> с id="num" надо разгадать число если правильно то выводится res.innerHTML а если не правильно создается новый массив.

for(i = 0; i < arr.length; i++){
    switch(num){
    case arr[0]:
        res.innerHTML = "Nice you right" + " : " + num + "<br>";
        break;
    case arr[1]:
        res.innerHTML = "Nice you right" + " : " + num + "<br>";
        break;
    case arr[2]:
        res.innerHTML = "Nice you right" + " : " + num + "<br>";
        break;
    case arr[3]:
        res.innerHTML = "Nice you right" + " : " + num + "<br>";
        break;  
    default:
        res.innerHTML = "Неправильно попробуйте угадать число снова";
        mass.onclick();
    }
Answer 1

function checkInput(arr, num) { 
  if (arr.indexOf(num) != -1) 
    return "Nice you right" + " : " + num + "<br>";   
     
  return "Неправильно попробуйте угадать число снова";    
} 
 
 
console.log(checkInput([1, 5, 6, 2], 2)); 
console.log(checkInput([1, 5, 6, 2], 9)); 
console.log(checkInput([14, 2345, 234234, 42342], 30)); 
console.log(checkInput([14, 2345, 234234, 42342, 666], 666));

arr.indexOf - возвращает первый индекс, по которому данный элемент может быть найден в массиве или -1, если такого индекса нет.

Собственно, зная это, можете применить у себя данную проверку вместо switch/case и if/elseif

P.S. по-хорошему checkInput должен возвращать не надпись, а true/false, и от него уже танцевать. Но главное, чтоб вы уловили смысл.

Answer 2
if(num == arr[0]){
    res.innerHTML = "Nice you right" + " : " + num + "<br>";
} else if(num == arr[1]){ 
    res.innerHTML = "Nice you right" + " : " + num + "<br>";
} else if(num == arr[2]){ 
    res.innerHTML = "Nice you right" + " : " + num + "<br>";
} else if(num == arr[3]){ 
    res.innerHTML = "Nice you right" + " : " + num + "<br>";
} else { 
    res.innerHTML = "Неправильно попробуйте угадать число снова";
    mass.onclick();
}

Вариант который легче поддерживать если увеличить количество цифр.

var check = false;
for(var i in arr){
  if(num == arr[i]){
    check = true;
    break;
  }
}
res.innerHTML = check ? "Nice you right" + " : " + num + "<br>" : "Неправильно попробуйте угадать число снова";
if(!check){
  mass.onclick();
}
Answer 3

как вариант:

let res.innerHTML = (num === arr[0]) ? "Nice you right" + " : " + num + "<br>" :
                    (num === arr[1]) ? "Nice you right" + " : " + num + "<br>" :
                    (num === arr[2]) ? "Nice you right" + " : " + num + "<br>" :
                    (num === arr[3]) ? "Nice you right" + " : " + num + "<br>":
                                      "Неправильно попробуйте угадать число снова";

или даже так:

let res.innerHTML = ((num === arr[0]) || (num === arr[1]) || (num === arr[2]) || (num === arr[3])) ? 
                "Nice you right" + " : " + num + "<br>" : 
                "Неправильно попробуйте угадать число снова";
READ ALSO
AJAX запрос ошибка

AJAX запрос ошибка

Как произвести ajax запрос? При простейшем коде выдает ошибку:

307
Скролл VS fixed и absolute

Скролл VS fixed и absolute

Такая проблема , есть кнопки с position:fixed и подвал с position:absolute , при вызове модального окна , пропадает скролл и все смещается на размер скролла

246
Как создать модуль Angular 2 на es6 без typeScript?

Как создать модуль Angular 2 на es6 без typeScript?

Изучаю Angular 2Решил для изучения попробовать написать на ES6 вместо TS

277
Почему нельзя передать данные в поле?

Почему нельзя передать данные в поле?

Вот здесь переменная datatime является результатом парсинга json'aВ консоль она выводится правильно (проверено)

259