本文汇总了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));//最小值