一道Javascript面试题,看到很多错误解答,各位看看我是否解答正确
题目:建立一个方法,当输入数小于等于100返回a,大于100返回b.要求是不能用if else,|| ? &&,switch case
解答如下:
function f(v, a, b) {
v = Math.min(Math.ceil(v), 101);//取小于101的数,如果>101返回101
v = Math.floor(v / 101);// >100返回1,<=100返回<=0
v = Math.max(v, 0); //去掉负数
return {
"0": a,
"1": b
}[v];
}
document.writeln(f(100, 1, 2)); // 等于100,返回1
document.writeln(f(300, "a", "b")); //大于100,返回b
document.writeln(f(101, "+", "-")); // 大于100,返回-
document.writeln(f(-101, "i", "j")); // 小于100并且是负数,返回i
v = Math.min(Math.ceil(v), 101);//取小于101的数,如果>101返回101
v = Math.floor(v / 101);// >100返回1,<=100返回<=0
v = Math.max(v, 0); //去掉负数
return {
"0": a,
"1": b
}[v];
}
document.writeln(f(100, 1, 2)); // 等于100,返回1
document.writeln(f(300, "a", "b")); //大于100,返回b
document.writeln(f(101, "+", "-")); // 大于100,返回-
document.writeln(f(-101, "i", "j")); // 小于100并且是负数,返回i