求取数组的最大值和最小值

279 阅读1分钟

在 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