2016-09-04 6 views
0

поэтому у меня есть кусок кода, где у меня есть массив (ar = [1,2,3,4,5]) и две функции. функции должны делать то же самое: распечатать что-то, если 1 существует в массиве. но функция func всегда возвращает «nope» вместо «one», но функция other всегда возвращает правильную вещь. единственная разница между этими двумя функциями - функция func имеет переключатель вместо if/else. Зачем? в исходном коде есть около 12 случаев, поэтому мне действительно нужно использовать коммутатор.Оператор switch не ведет себя так, как должен

var ar=[1,2,3,4,5]; 
function func(num){ 
    var one=num; 
    switch (one) { 
     case one===1: 
      console.log("one"); 
      break; 
     default: 
      console.log("nope"); 
      break; 
    } 
} 
function another (num) { 
    if(num===2){ 
     console.log("found two"); 
    } else if(num===3){ 
     console.log("found thre"); 
    } else{ 
     console.log("nope"); 
    } 
} 

ar.forEach(func); 
ar.forEach(another); 
+2

Обновите свой 'case one === 1:' to 'case 1:'. В настоящее время вы делаете это как 'case true:' – choz

ответ

0

Самый простой способ. Измените параметр switch на true, если вы хотите использовать сравнение в случае, потому что one===1 возвращает true/false. Вот почему вы всегда получаете «nope».

var ar=[1,2,3,4,5]; 
function func(num){ 
    var one=num; 
    switch (true) { 
     case one===1: 
      console.log("one"); 
      break; 
     default: 
      console.log("nope"); 
      break; 
    } 
} 
3

Вы должны использовать значение, которое вы хотите сравнить с одним

следовательно

case 1: 

вместо

case one===1 

вот скрипку https://jsfiddle.net/cunx1ono/

Смежные вопросы