获取数组中的最大值和最小值
在业务开发中,有时候会遇到求数组最大值和最小值的需求,如何使用比较简单的方式求出这个值呢?今天发现可以使用es6的reduce方法实现。
- 回顾reduce使用方法
先来回顾下reduce的使用方法,根据MDN的介绍,reduce方法接受两个参数,第一个是回调函数,第二个是初始值,示例如下:
reduce((previousValue, currentValue, currentIndex, array) => { /* ... */ }, initialValue)
previousValue: 上次调用回调函数的返回值
currentValue:参与当前计算的值
currentIndex:参与当前计算的值的索引
array:原始数组
如果指定了initialValue,第一次调用回调时 initialValue 就会等于 previousValue, 此时 currentValue 会被初始化为数组中的第一个值。
如果没有指定 initialValue,第一次调用回调时 previousValue 会被初始化为数组中的第一个值,currentValue 被初始化为数组中的第二个值。
- 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
- 求数组最大值和最小值
理解了reduce的使用方法,现在求最大值和最小值就很简单了
// 最大值:把每一次的返回值和下一次做比较,返回最大值
[1,2,3].reduce((p, c) => p > c ? p : c)
// 最小值:把每一次的返回值和下一次做比较,返回最小值
[1,2,3].reduce((p, c) => p < c ? p : c)
这样是不是一下子就理解啦
获取数组中的最大值和最小值首发于聚享小站,如果对您有帮助,不要忘记点赞支持一下呦🎉
胖胖熊笔记,笔记已迁移