Math对象面试题目

HTML5学堂:JavaScript的Math对象的命令虽然简单,但是逻辑性要求比较高,它可以辅助开发者实现一些JavaScript复杂效果,这就要求大家有一定的逻辑思维了。今天要给大家分享Math对象比较奇葩的题目。

Math对象面试题目

只允许使用 + - * / 和 Math.* ,求一个函数 y = f(x, a, b);当x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,数组(本题目来源于互联网)

剖析题目

f函数返回值的情况如下:

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));

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2015-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区