HTML5学堂-码匠 HTML5学堂

您当前位于:HTML5面试题 ——> WEB前端面试真题 - Math对象,随机数等问题

WEB前端面试真题 - Math对象,随机数等问题

2015/06/30 21:24:29 | 作者:HTML5学堂(码匠) | 分类:HTML5面试题 | 关键词:前端,面试题,Math,数学对象,随机数

Math对象面试题目

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

Math对象面试题目

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

欢迎沟通交流~HTML5学堂

剖析题目

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

x < 100 返回值为a

x == 100 返回值为b

x > 100 返回值为b

该题目我们可以从x > 100和x <= 100入手,考虑如何判断X的大小?

一般涉及到判断,大家可能会想到转换成0和1,这样就比较好判断了。

我们可以这么来想,如果比100小的是0

  1. Math.max(x - 100, 0)

如果比100大的是1

  1. Math.ceil(Math.min(Math.max(x - 100, 0), 1))

完整的参考答案

  1. function f(x, a, b) {
  2.     var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
  3.    
  4.     return a * temp + b * (1 - temp);
  5. }
  6. console.log(f(-10, 1, 2));

欢迎沟通交流~HTML5学堂

微信公众号,HTML5学堂,码匠,原创文章,WEB前端,技术分享

HTML5学堂

原创前端技术分享

HTML5学堂,HTML5,WEB,前端,视频课程,技术视频,学习视频,面试,JS

原创视频课程

用心打造精品课程

微信小程序,决胜前端,面试题,面试题集合,前端,HTML5,真题

小程序-决胜前端

前端面试题宝库

原创书籍,学习书籍,书籍推荐,HTML5布局之路,HTML5,WEB前端

HTML5布局之路

非传统模式讲解前端