可以从两个方面考虑
1、使用Math.max()、Math.min()方法
2、遍历数组获取最大值
使用Math的静态方法max/min
1、结合ES6使用扩展运算符
Math.max(...arr)
扩展运算符:将数组转化成以逗号分隔的参数
2、使用apply或者call方法
Math.max.apply(null,arr);
Math.max.call(null,...arr);
区别:apply方法的参数是数组,call方法的参数是逗号间隔的参数列表
3、结合reduce方法
reduce方法接收一个函数作为累加器,数组的每一个值(从左到右)开始缩减,最终计 算为一个值。
在这里,这个累加器函数就是getMax()
,比较两个数,返回其中的最大值,通过这样的缩减,最后返回整个数组的最大值。
function getMax(prev, next) {
return Math.max(prev, next)
}
arr.reduce(getMax)使用遍历获取
遍历方法获取
1、只比较找出最大值
假定数组中的第一个元素值最大max,循环数组,将max与其他元素做比较,大的值赋给max。循环结束之后,max的值即为最大值。
let max = arr[0]
arr.forEach(item => max = item > max ? item : max)
console.log(max) // 100
2、将真个数组都排序,找出最大值
利用array.sort()
方法,指定排序函数,来排序数组。当然,你也可以使用其他排序方式,来排序数组。
let AS = arr.sort((a, b) => a - b)
AS[arr.length-1] // 获取最大值:100
AS[0] // 获取最小值: -1
代码实现如下:
let arr = [2,-1,56,100,-100,32,4,9];
let max1 = Math.max(...arr);
console.log("max1:"+max1);
let max2 = Math.max.apply(null,arr);
console.log("max2:"+max2);
let max3 = Math.max.call(null,...arr);
console.log("max3:"+max3);
function getMax(pre,next){
return Math.max(pre,next);
}
let max4 = arr.reduce(getMax);
console.log("max4:"+max4);
let max5 = arr[0];
arr.forEach((item) => max5 = (item > max5 ? item : max5))
console.log("max5:"+max5);
const newArr = arr.sort((a,b) => a - b);
let max6 = newArr[arr.length - 1];
console.log("max6:"+max6);
浏览器结果如下: