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

在业务开发中,有时候会遇到求数组最大值和最小值的需求,如何使用比较简单的方式求出这个值呢?今天发现可以使用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)

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

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

posted @ 2022-02-18 21:12  wmui  阅读(551)  评论(0编辑  收藏  举报