IF Statement Multiple Answers - Same Result Javasc

2019-08-29 23:41发布

问题:

Is their a method to have multiple right answers with the same result?

 function check(code){
    if(code == (8 || 9 || 13 || 16 || 17 || 18 || 20 || 32)){
      return true;
    }
 }

I know I can use a switch statement, but I was wondering if their is anyway similar to this. I already tried using an array but its slow.

I also realise that you can use && but I don't want to have to type code == a hundred times.

回答1:

consider using an array

function check(code){
    return [8,9,13,16,17,18,20,32].indexOf(code) != -1;
}

Note that the indexOf method is a part of ECMA5 and may not be available in some browsers.

See https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf for full document.



回答2:

You either have to do this

return code == 8 || code == 9 || ...;

or this

return [8, 9, 13, ...].indexOf(code) > 0;


回答3:

Nope, you've got to spell them all out.

A better way would be a loop:

var values = [8, 9, 13, 16, 17, 18, 20, 32];
for (i = 0; i < values.length; ++i) {
    if (code === values[i]) {
        // do something.
    }
}


回答4:

How about that:

function check(code){
   return [8, 9, 13, 16, 17, 18, 20, 32].indexOf(code) != -1;
}