js获取数组最大值的四种方式

本文介绍了JavaScript中获取数组最大值的四种方法:1) 使用Math.max.apply(null, arr);2) 使用Math.max.call(null, ...arr);3) 利用数组sort()和reverse()结合;4) 自定义sort()比较函数返回值实现。通过这些方法,可以方便地找出数组中的最大值。" 112492087,10547384,搜狗AI夺冠ICPR 2020人脸关键点检测挑战赛,"['计算机视觉', '人脸识别', '深度学习', '图像处理', '比赛']

 js获取数组最大值的四种方式

 

var arr = [7,2,0,-3,5];
1
1.apply()应用某一对象的一个方法,用另一个对象替换当前对象
 
var max = Math.max.apply(null,arr);
console.log(max)


由于max()里面参数不能为数组,所以借助apply(funtion,args)方法调用Math.max(),function为要调用的方法,args是数组对象,当function为null时,默认为上文,即相当于apply(Math.max,arr)
2.call()调用一个对象的一个方法,以另一个对象替换当前对象
var max1 = Math.max.call(null,7,2,0,-3,5)
console.log(max1)

call()与apply()类似,区别是传入参数的方式不同,apply()参数是一个对象和一个数组类型的对象,call()参数是一个对象和参数列表
3.sort()+reverse()
//sort()排序默认为升序,reverse()将数组掉个
var max3 = arr.sort().reverse()[0];
console.log(max3)

4.sort()
//b-a从大到小,a-b从小到大
var max2 = arr.sort(function(a,b){
    return b-a;
})[0];
console.log(max2)

### JavaScript 获取数组最大值的方法 #### 使用遍历方式寻找最大值 通过遍历整个数组来找到其中的最大值是一种直观的方式。这种方法会初始化一个变量用于存储当前已知的最大,通常设置为数组的第一个元素,之后依次迭代剩余的每一个元素并与该初始对比,一旦发现更大的数就更新此变量直至循环结束。 ```javascript var arr = [51, 172, 81]; var maxVal = arr[0]; arr.forEach(function (item) { maxVal = item > maxVal ? item : maxVal; }); console.log(maxVal); // 输出最大的那个数字 ``` 这种方式虽然简单易懂但是效率相对较低,在处理大规模数据集时性能表现可能不如其他更优化的办法[^1]。 #### 利用 `Math.max` 和 `Function.prototype.apply` 另一种更为简洁高效的做法是借助内置函数 `Math.max()` 来直接求解最问题。由于 `Math.max()` 接受不定数量的参数而非单一数组作为输入源,因此可以通过调用 `Function.prototype.apply()` 方法将目标数组展开成独立实参传递给前者完成操作。 ```javascript var numbersArray = [9, 8, 55, 66, 49, 68, 109, 55, 33, 6, 2, 1]; var maxValueUsingApply = Math.max.apply(null, numbersArray); console.log(maxValueUsingApply); ``` 上述代码片段展示了如何利用 `apply()` 函数配合 `Math.max()` 实现快速定位数组内的最高数[^2]。 #### ES6 扩展运算符简化写法 随着 ECMAScript 6 的引入,开发者还可以采用扩展运算符 (`...`) 进一步精简语法结构: ```javascript const nums = [9, 8, 55, 66, 49, 68, 109, 55, 33, 6, 2, 1]; const highestNumber = Math.max(...nums); console.log(highestNumber); ``` 这里使用了三个点号表示的扩展运算符代替 apply() 调用来达到相同的效果,使得代码更加紧凑清晰[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值