Skip to content

找出数组中最大值的几种方法

js
// 找出数组中最大值的几种方法
// 原数组
const originArr = [1, 2, 3, 5, 100, -100, 100, 20, 50, 60, 12, 99]

// 方法一:利用reduce
let getMax1 = originArr.reduce((prev, cur) => {
  if (prev > cur) {
    return prev
  } else {
    return cur
  }
})
console.log('getMax1:', getMax1)

// 方法二:利用sort(a-b排序从小到大,b-a排序从大到小)
let getMax2 = originArr.sort((a, b) => b - a)[0]
console.log('getMax2:', getMax2)

// 方法三:利用Math.max
let getMax3 = Math.max(...originArr)
console.log('getMax3:', getMax3)

// 方法四:普通的for循环
let getMax4 = originArr[0]
for (let i = 0; i < originArr.length; i++) {
  originArr[i] > getMax4 ? (getMax4 = originArr[i]) : null
}
console.log('getMax4:', getMax4)

// 方法五:ES5的apply
let getMax5 = Math.max.apply(null, originArr)
console.log('getMax5:', getMax5)

// 方法六:利用数组的flat方法
let getMax6 = originArr.flat()[0]
console.log('getMax6:', getMax6)

// 方法七:利用filter / forEach / map,原理与for类似
let getMax7 = originArr[0]
// filter:
originArr.filter((i) => {
  i > getMax7 ? (getMax7 = i) : null
})
// map:
// originArr.map(i => {
//     i > getMax7 ? getMax7 = i : null
// })
// forEach:
// originArr.forEach(i => {
//     i > getMax7 ? getMax7 = i : null
// })
console.log('getMax7:', getMax7)