求数组最大/最小值

378 阅读1分钟

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])

小结

还有其它方法,都大同小异,最大的用处恐怕就是面试;

业务中,要根据实际情况选择,最好进行数据的校验等等。