在 JavaScript 中,我们在很多时候需要求取数组的最大值和最小值,那么下面将介绍
6种求取的方式!
使用ES6的扩展运算符
let arr = [-2, 0, 5, 10, 100]
// 此处用到了 数组内置对象 Math 的 max、min 方法
console.log('最大值: ' + Math.max(...arr)) // 100
console.log('最小值: ' + Math.min(...arr)) // -2
Math.max.apply(null, arr)方法
Math.max()和Math.min()方法可以获取到最大值和最小值,但是不支持数组类型,需要借助 ES6 的扩展运算符才可以实现,那么可不可以直接对数组进行求取呢?
答案肯定是可以,请看如下用法:
let arr = [-2, 0, 5, 10, 100]
console.log('最大值: ' + Math.max.apply(null, arr)) // 100
console.log('最小值: ' + Math.min.apply(null, arr)) // -2
数组的reduce方法
let arr = [-2, 0, 5, 10, 100]
let max = arr.reduce((a, b) => (a > b ? a : b))
let min = arr.reduce((a, b) => (a < b ? a : b))
console.log('最大值:' + max) // 100
console.log('最小值:' + min) // -2
sort排序
/* 降序排列 */
let arr = [-2, 0, 5, 10, 100]
const newArr = arr.sort((a, b) => {
return b - a
})
// 最大值为 第一项
console.log('最大值: ' + newArr[0]) // 100
// 最小值为 最后一项
console.log('最小值: ' + newArr[newArr.length - 1]) // -2
/* 升序排列 */
let arr = [-2, 0, 5, 10, 100]
const newArr1 = arr.sort((a, b) => {
return a - b
})
// 最大值为 最后一项
console.log('最大值: ' + newArr1[newArr1.length - 1]) // 100
// 最小值为 第一项
console.log('最小值: ' + newArr1[0]) // -2
for 循环
let arr = [-2, 0, 5, 10, 100]
// 将数组的第一项假设为 最大值 / 最小值
var max = arr[0]
var min = arr[0]
for (var i = 0; i < arr.length; i++) {
max = arr[i] > max ? arr[i] : max
min = arr[i] > min ? min : arr[i]
}
console.log('最大值: ' + max) // 100
console.log('最小值: ' + min) // -2
冒泡排序
let arr = [-2, 0, 5, 10, 100]
// 外层循环控制趟数
for (var i = 0; i < arr.length - 1; i++) {
// 里层循环控制每趟的次数
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
console.log('最大值为:' + arr[arr.length - 1]) // 100
console.log('最小值为:' + arr[0]) // -2