如何使用js的reduce实现如图的数据扁平化

一直以来都在函数式编程的大门の外徘徊要入门的话首先得熟悉各种高阶函数,数组的reduce方法就是其中之一

reduce方法将会对数组元素从左到右依次执行reducer函数,然后返回一个累计的值举个形象的例子:你要组装一台电脑,买了主板、CPU、显卡、内存、硬盘、电源...这些零件是组装电脑的必要条件

装的过程可以簡单概括为拆掉每个零件的包装,再装到一起类比一下reduce函数就可以明白了,那些零件就相当于要执行reduce方法的数组对每个零件执行拆除包装的加工程序,就是对数组的每个元素执行reducer函数把这些零件装到一起,就相当于reduce方法的任务最终组装好的电脑相当于reduce方法的返回值。

reduce方法接收两个参数第一个参数是回调函数reducer,第二个参数是初始值reducer函数接收四个参数:

  • Accumulator:MDN上解释为累计器,但我觉得不恰当按我的悝解它应该是截至当前元素,之前所有的数组元素被reducer函数处理累计的结果
  • Current:当前被执行的数组元素

如果传入第二个参数reduce方法会在这个参數的基础上开始累计执行。

概念讲了那么多那reduce它的执行机制是怎样的呢?别着急从用法入手一点一点分析。

来个最好理解的例子:数組求和

通过上面的用法可以总结出来reduce的特点:

  • 返回值为一个所有Accumulator累计执行的结果
}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信