HTML5学堂:JavaScript的Math对象的命令虽然简单,但是逻辑性要求比较高,它可以辅助开发者实现一些JavaScript复杂效果,这就要求大家有一定的逻辑思维了。今天要给大家分享Math对象比较奇葩的题目。
只允许使用 + - * / 和 Math.* ,求一个函数 y = f(x, a, b);当x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,
数组(本题目来源于互联网)
x < 100 返回值为a
x == 100 返回值为b
x > 100 返回值为b
该题目我们可以从x > 100和x <= 100入手,考虑如何判断X的大小?当然我们可以先判断X等于100的时候。
if (x == 100) {
return b;
};
那现在我们只差x小于和大于100的情况了,该如何判断呢?一般涉及到判断,大家可能会想到转换成0和1,这样就比较好判断了。
我们可以这么来想,如果比100小的是0
Math.max(x - 100, 0)
如果比100大的是1
Math.ceil(Math.min(Math.max(x - 100, 0), 1))
function f(x, a, b) {
var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
return a * temp + b * (1 - temp);
}
console.log(f(-10, 1, 2));