如何减少if的数量

时间:2015-10-20 16:09:55

标签: javascript

有没有办法减少此代码中“if”的数量?

function test(input) {
  if ((input % 3 == 0) && (input % 5 == 0)) {
    return 'fizzbuzz';
  } else if (input % 3 == 0) {
    return 'fizz';
  } else if (input % 5 == 0) {
    return 'buzz';
  } else {
    return '' + input;
  }
}


for (var i = 1; i < 100; i++) {
  console.log(test(i));
}

4 个答案:

答案 0 :(得分:3)

您可以通过存储比较值来避免这种情况:

var mod3 = input % 3 == 0;
var mod5 = input % 5 == 0;

...创建查找表...

var outs = [input, "fizz", "buzz", "fizzbuzz"];

...并将其编入索引......

return outs[(+mod3) + 2 * (+mod5)];

...没有if s!

答案 1 :(得分:1)

您可以使用三元运算符:

return ((input%3==0)&&(input%5==0)) ? 'fizz buzz'
       : (input%3==0) ? 'fizz'
       : (input%5==0) ? 'buzz'
       : '' + input;

答案 2 :(得分:0)

如果您不想使用if,为什么不尝试使用case语法?

http://www.w3schools.com/js/js_switch.asp

或者使用JS简写为if

这样:

var something;

if (2 + 2 === 4){
 something = "Yup!"
} else {
 something = "Nope"
}

变为

var something = 2 + 2 === 4 ? "Yup!" : "Nope";

答案 3 :(得分:0)

你可以完全摆脱第一个“if”,因为3和5以及“fizz”和“buzz”在后来使用。您也可以等到返回结束。类似的东西:

var str = "";

if (input % 3 === 0){
  str +="fizz";
}

if (input % 5 === 0 ){
  str +="buzz";
} else {
str = input;
}

return str;