JavaScript 获取数组最大值与最小值的多种实现方式

作者:代码拾荒

时间:2026-10-29

浏览:281

本文汇总了JavaScript中获取数组最大值和最小值的几种常见方法,包括使用递归函数遍历、for循环迭代以及利用Math.max结合apply方法直接处理。同时探讨了多维数组扁平化后求值的技巧,帮助开发者根据场景选择最优方案。

文章目录

基于递归函数的最大值查找

第一种方案是通过递归函数来实现。核心逻辑是定义一个变量存储当前最大值,并在递归过程中不断比较数组元素。若当前元素大于记录的最大值,则更新该值。递归终止条件为索引到达数组末尾,最终返回记录的最大值。


var arr = [9,8,55,66,49,68,109,55,33,6,2,1];
  
var max = arr[0];

function findMax( i ){
  if( i == arr.length ) return max;
  if( max < arr[i] ) max = arr[i];
  findMax(i+1);
}
 
findMax(1);
console.log(max);

基于For循环遍历的实现

第二种方案采用for循环进行遍历。初始化最大值变量为数组第一个元素,随后从第二个元素开始逐个与当前最大值比较。如果发现更大的值,则立即更新最大值变量。循环结束后,输出最终的最大值。


var arr = [9,8,55,66,49,68,109,55,33,6,2,1];  
var max = arr[0];
for(var i = 1; i < arr.length; i++){
  if( max < arr[i] ){
    max = arr[i];
  }
}

console.log(max);

利用Math.max与apply方法

第三种方案利用Math.max函数结合apply方法。apply允许将数组作为参数列表展开传递给Math.max,从而直接返回数组中的最大值。这种方法代码简洁,无需手动编写遍历逻辑。


Math.max.apply(null,[9,8,55,66,49,68,109,55,33,6,2,1])

排序后获取极值的方法

需要注意的是,除了上述直接求值的方法外,还可以先对数组进行排序。排序完成后,根据新数组的索引位置(通常是最后一个或第一个元素)来获取最大值或最小值。


var a=[1,2,3,5];
alert(Math.max.apply(null, a));//最大值
alert(Math.min.apply(null, a));//最小值

多维数组的处理技巧

对于多维数组,上述方法可能无法直接生效。一种处理思路是先将多维数组转换为一维数组,例如通过join和split方法将嵌套结构展平,然后再应用求最大值或最小值的逻辑。


var a=[1,2,3,[5,6],[1,4,8]];
var ta=a.join(",").split(",");//转化为一维数组
alert(Math.max.apply(null,ta));//最大值
alert(Math.min.apply(null,ta));//最小值

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章