Math.max / Math.min
Math是JavaScript的内置对象,Math.max() 函数返回一组数中的最大值。由于Math.max()参数不能为数组(当为数组时返回NaN),我们需要将数组进行处理。
使用apply方法,范例:
let arr = [1,23,1,45,6,7]
Math.max.apply(null, arr) // 45
Math.min.apply(null, arr) // 1
//这里的null可以替换成Math
或者使用ES6的展开扩展符
let arr = [1,23,1,45,6,7]
Math.max(...arr) // 45
Math.min(...arr) // 1
优点是简单、快捷,不足是数组最好要经过校验,不能有空项。
冒泡
拿第一个数与后面的数比较,如果大/小,则替换继续比较
const arr = [11,3,2,44,12,54,113,9]
const max = arr => {
let basic = arr[0];
for(let i = 1; i < arr.length; i++) {
basic = basic > arr[i] ? basic : arr[i]
}
return basic
}
console.log(max(arr)) // 113
如果进行递归,那就是熟悉的冒泡排序。这个方法能够更进一步得到下标,或其他处理。
Array.prototyoe.sort
利用数组方法进行排序,排完后得到最大/最小值。
const arr = [11,3,2,44,12,54,113,9]
const newArr = arr.sort((a, b) => b - a)
console.log(newArr[0])
小结
还有其它方法,都大同小异,最大的用处恐怕就是面试;
业务中,要根据实际情况选择,最好进行数据的校验等等。