当前位置: 首页 > 工具软件 > minmax.js > 使用案例 >

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

蓬森
2023-12-01

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

一、功能使用

<%@ 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引擎中提升性能。

 

 类似资料: