JS中的Math.max.apply()、Math.max()、Math.min.apply() 和 Math.min()

 最近遇到这个函数,记录一下它的用法以及我对它的理解。

一、功能使用

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
    <body> 
    	<h1>小白学习</h1>
    	<script>
    	  var arr=[2,5,3,6,2,4,2,15,9,6,0,1];
    	  alert(Math.min.apply(null,arr));//0//数组中最小值
    	  alert(Math.max.apply(null,arr));//15//数组中最大值
    		
    	  alert(Math.min(2,5,3,6,2,4,2,15,9,6,0,1));//最小值
    	  alert(Math.max(2,5,3,6,2,4,2,15,9,6,0,1));//最大值
    	</script>
    </body> 
</html>

功能:获取最大 / 最小值。

二、理解分析

max和min差不多,我就拿max来分析吧!

1、Math.max()

Math.max(2,5,3,6,2,4,2,15,9,6,0,1)

 这个函数比较好理解,就是找出其后参数中的最大值。Math.max()方法,支持传递多个参数,比如:Math.max(1,4,2,3,7,5,6)
但是它不支持直接传递一个数组作为参数。

解决方案一:等会介绍的 Math.max.apply()

解决方案二:换种思维,可用算法运算来比较得出数组最大值,如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
    <body> 
    	<h1>小白学习</h1>
    	<script>
    		var arr=[2,5,3,6,2,4,2,15,9,6,0,1];
    		alert(getMax(arr));
    		function getMax(arr){
    		   var arrLen=arr.length;
    		   for(var i=0,ret=arr[0];i<arrLen;i++){
    		     ret=Math.max(ret,arr[i]);
    		   }
    		   return ret;
    		}
    	</script>
    </body> 
</html>

 2、Math.max.apply()

Math.max.apply(null,arr)

Function.apply()是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以这样去理解:
XXX.apply是一个调用函数的方法,其参数为:apply(Function, Args),
Function为要调用的方法,即作为函数内的this。Args是参数列表。当Function为null时,默认为上文,
可认为是
apply(Math.max, arr)
实际上等同于接收一个数组,并且是将数组中的每个值,分开来,传递给调用的方法。

在此处,使用apply的优点是在部分JS引擎中提升性能。

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值