• 获取数组中的最大值和最小值


    在业务开发中,有时候会遇到求数组最大值和最小值的需求,如何使用比较简单的方式求出这个值呢?今天发现可以使用es6的reduce方法实现。

    1. 回顾reduce使用方法

    先来回顾下reduce的使用方法,根据MDN的介绍,reduce方法接受两个参数,第一个是回调函数,第二个是初始值,示例如下:

    reduce((previousValue, currentValue, currentIndex, array) => { /* ... */ }, initialValue)
    

    previousValue: 上次调用回调函数的返回值
    currentValue:参与当前计算的值
    currentIndex:参与当前计算的值的索引
    array:原始数组

    如果指定了initialValue,第一次调用回调时 initialValue 就会等于 previousValue, 此时 currentValue 会被初始化为数组中的第一个值。
    如果没有指定 initialValue,第一次调用回调时 previousValue 会被初始化为数组中的第一个值,currentValue 被初始化为数组中的第二个值。

    1. reduce使用示例

    概念理解感觉不太直观,我们现在举个数组求和的例子

    [1,2,3].reduce((p, c) => p + c, 0)
    

    因为设置了初始值0,因此第一次循环时候,p就是0,c就是1。第二次循环时,p就是0+1的结果1,c就是2。第三次循环时,p就是1+2的结果3,c就是3。因此最终返回6

    1. 求数组最大值和最小值

    理解了reduce的使用方法,现在求最大值和最小值就很简单了

    // 最大值:把每一次的返回值和下一次做比较,返回最大值
    [1,2,3].reduce((p, c) => p > c ? p : c)
    
    // 最小值:把每一次的返回值和下一次做比较,返回最小值
    [1,2,3].reduce((p, c) => p < c ? p : c)
    

    这样是不是一下子就理解啦

    获取数组中的最大值和最小值首发于聚享小站,如果对您有帮助,不要忘记点赞支持一下呦

  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/yesyes/p/15911297.html
Copyright © 2020-2023  润新知