Math对象--确定最大最小值

Math 对象 存在两个方法来确定最大最小值,分别是 max 和 min ,但是这两个方法,接收的参数,只能是 逗号分隔 的数字,或者是  数字字符串,数字字符串在比较的时候,会自动转为  数字

类似下面这样

let max1 = Math.max("1", "2", "3");
console.log(max1); // 3

let max1 = Math.max(1, 2, 3);
console.log(max1); // 3

但是如果需要处理的是一个数组,那又该怎么办,如果直接把数组传递进去的话,结果会是神马呢?

let max1 = Math.max(["1", "2", "3"]);
console.log(max1); // NaN

let max2 = Math.max([1, 2, 3]);
console.log(max2); // NaN

没错,结果是NaN ,是一个非数字,那就代表其实  max 这个方法 是不认识传进来的数组的,那我们要想取到这个数组内部的最大最小值得话,最原始的方法,其实是把数组内部的元素全部取出来,然后放到 max 内部,但是,这就存在一个问题了,怎么遍历取出来呢?  传递的参数,不能是一个 大字符串,只能是一个个 用 逗号 分隔的数字 或者字符串类型的数字,那这个其实就不好做了,或者说我暂时没想到好的方法。

但是js内部其实是存在 方法的,那就是 通过 apply  方法,apply 方法 接收两个参数,第一个是this指向,第二个是一个数组,那我们可以这样来做

let max1 = Math.max.apply(Math, ["1", "2", "3"]);
console.log(max1); // 3

let max2 = Math.max.apply(Math, [1, 2, 3]);
console.log(max2); // 3

没错,第一项 传递的是 Math 对象,因为 其实归根结底调用的 还是 Math 对象下的方法,如果不传 Math 对象的话,结果就是这样的了

let max1 = Math.max.apply(["1", "2", "3"]);
console.log(max1); // -Infinity

let max2 = Math.max.apply([1, 2, 3]);
console.log(max2); // -Infinity

负的无限大,emmmm,至于为啥是负的无限大,我也挺好奇的,暂时还没反应过来,后面找到答案了,再来补充一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值