「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。
前言
在项目中,我们不乏会经常遇到需要取最大数或者最小数的场景
当然,要完成这个可以说相对还是比较容易的,实现方式也可以说五花八门,大不了就用for一遍
但是其实Math对象就已经提供了一个非常好用的api,今天笔者就来分享一下Math对象提供的比较大小的能力
关于min和max
关于max
max函数会返回一组数中其中最大的数
由于 max 是 Math 的静态方法,所以应该像这样使用:Math.max(),而不是创建的 Math 实例的方法(Math 不是构造函数)
关于min
min函数会返回一组数中其中最小的数
使用方式和max函数一致
先看个例子
先来看个题目,先分析一下以下代码会输出什么
var min = Math.min(), max = Math.max()
console.log(min < max);
结果是 false,不知道你答对了没
在解析一下为什么输出的是 flase 之前,我们看看min和max在返回值上有什么规则
关于 min 和 max的返回值
Math.min():
- 返回参数中最小的值
- 如果没有参数,则返回 Infinity
- 如果有某个参数为 NaN,或是不能转换成数字的非数字值,则返回 NaN
Math.max():
- 返回参数中最大的值
- 如果没有参数,则返回 -Infinity
- 如果有某个参数为 NaN,或是不能转换成数字的非数字值,则返回 NaN
关于min和max的参数问题
参与min和max方法统计的参数需要一 一传入函数中,即为:
Math.min(1,3,5,7,9) //1
Math.max(2,4,6,8,10) //10
可能会有同学会说,如果我想比较一个数组内的数,还要把数组遍历一遍岂不是多此一举了?如果是直接遍历数组确实有点多此一举了,不过我们有其他办法~
就是利用apply函数
function getMinByArry(arry){
Math.min.apply(null, arry)
}
function getMaxByArry(arry){
Math.max.apply(null, arry)
}
如果你已经用上了ES6,那么就更好啦,直接用ES6的解构赋值就完事了
Math.min(...arry)
Math.max(...arry)