有没有办法减少此代码中“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));
}
答案 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;