网站首页 » 前端开发 » JavaScript » JavaScript 中的 Math.max() 和 Math.min()
上一篇:
下一篇:

JavaScript 中的 Math.max() 和 Math.min()

前言

在 JS 中,求最大值或者最小值在平时的前端开发中极其地常见,所以这个技能我们不能没有,除了在平时撸码中很常用,在面试中也是时有出现。那么下面我们就来看看怎么求,本文主要是分享 JavaScript 中原生的方法 Math.max() 和 Math.min() ,除此之面的其它方法在这里就不说了,比如:第三方框架提示的方法,毕竟原生有的方法,我们为什么不用?

首先我们先来看看 Math.max() 和 Math.min() 的定义,其实我们看一个就够了,因为这两个一看就知道是孪生兄弟,知一便知二:

Math.max() 是用来求最大值,这个明白一看就知道;没有传值就返回 -Infinity。如果传入的数值中有一个不是数字并且它不能被转化为数值的,则返回 NaN。

Math.max() 的基本用法也非常地简单:

Math.max(value1,value2,value3,value4,value5,......)

看完上面这些内容之后,我估计你对 Math.max() 的用法应该没什么问题了。不知道你看到没有,它接收的是多个参数值,那么两个问题来了,如果是数组或者是对象呢?它可以处理吗?答案是肯定的。

首先我们先来看看数组要怎么实现。要想用Math.max() 方法来求数组中的最大最小值,你必需要知道两点:

  • Math.max() 方法的用法上面已经说了,传入多个参数值。
  • 有了上面的认识,我们的思路就来了,把数组转换成多个参数不就行了吗?那怎么把数组转换成多个参数的形式?

有一个方法可以帮到你,那就是 apply() 方法,它个方法的作用之一就是把一个数组转换成多个参数。所以我们可以像下面这样写:

var numArray = [1,4,2,3,7,5,6];
Math.max.apply(null, numArray);

除了上面的写法外,我们还可以使用 ES6 中的扩展运算符:…

没错就是三个…,它的作用就是把数组切割碎(每一项)。

let numArray = [1,4,2,3,7,5,6];
Math.max(...numArray);

上面的变量声明也不一定非得用 let ,用 var 声明变量也是一样的。这种写法是不是比用 apply() 的写法要简单一些?但在 ES6 还没被普及之前,我们在使用这种方法的时候得判断好,开发环境有没有这样的条件。

那如果是对象呢,又怎么办?

let yearSales = {
    january:112,
    february:115,
    march:245,
    april:451,
    may:145,
    june:445,
    july:425,
    aguest:345,
    september:45,
    october:75,
    november:93,
    december:49,
};

let keys = [];
let values = [];
for(let key in yearSales){
    if(yearSales.hasOwnProperty(key) === true){
        keys.push(key);
        values.push(yearSales[key]);
    }
}
Math.max.apply(null,values);
Math.max(...values);

从上面我们就不难看出,要想学习一门东西,你就需要把所学到的东西有机的结合起来。求最小值 Math.min() 方法跟 Math.max() 方法一样,在这里就没必要再重复一遍了。

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/javascript-basis-math-max-and-math-min/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论 END