本文详细解析JavaScript中Math.max函数与Math.max.apply方法的区别。Math.max直接接收参数,而apply可将数组展开为参数列表,从而获取数组最大值。文章还通过自动生成自增编号的实战案例,展示Math.max.apply在JSON数组处理中的应用,帮助开发者掌握这一常用技巧。
在近期开发的一个小案例中,我遇到了Math.max.apply这种用法。由于之前接触较少,觉得这个技巧很有趣,因此记录下来供参考。
Math.max基础用法
1. Math.max基础用法
语法格式为:Math.max(n1,n2,n3,...,nX)。该方法的作用是返回指定参数中数值最大的那个值。
var a = Math.max(1,2,3,4);
console.log(a); //4
然而,如果最大值数据存储在数组中,直接调用Math.max无法达到预期效果。此时,就需要借助apply方法来解决这个问题。
Math.max.apply详解
2. Math.max.apply详解
apply()方法用于调用一个函数。简单来说,它改变了函数的this指向,并允许使用指定的数组来替换函数的参数列表。
其语法结构为:fun.apply(thisArg, [argsArray])
- thisArg:在fun函数运行时指定的this值,如果不设置指向,该参数可以为null。
- argsArray:传递的参数值,必须包含在一个数组中。
这里需要补充一点:传递的值如果是数组形式,返回值的类型取决于数组内的元素类型。例如,如果数组中是字符串,返回的也是字符串;如果是数值,返回的则是数值。比如传入'abc',返回结果也是'abc'(此为补充说明)。
返回值:apply()方法的返回值即为被调用函数的返回值,因为它本质上就是在调用函数。
var arr = [1, 66, 3, 99, 4];
var max = Math.max.apply(Math, arr);
var min = Math.min.apply(Math, arr);
console.log(max); //99
console.log(min); //1
Math.max.apply拓展案例
2.1 Math.max.apply拓展案例
接下来举一个实际应用案例——自动生成自增编号。说明:data是一个JSON数组,其中每个对象都包含一个id值。
let maxBookCode = ()=>{
let arr = [];
//遍历json数组,把所有对象的id存到arr这个空数组当中
data.forEach((item)=>{
arr.push(item.id);
});
//最后返回里面id值最大的那个数
return Math.max.apply(null,arr);
}
通过外部调用maxBookCode()并加1,即可自动生成自增的编号。
总结
至此,关于JavaScript中Math.max和Math.max.apply的区别及用法的介绍就到此结束。更多相关内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!