今天在菜鸟教程上看了reduce方法的使用以及别的程序员总结的reduce方法注意事项,总觉得有些地方还是很难让初学者理解。 我在这里为了自己和更多的初学者能真正理解,将这个方法用我自己的大白话总结一遍,希望对搞不清楚reduce()的同学有所帮助。 首先,reduce是数组的一个方法,也就是说最基本的语法是arr.reduce(function(prev, cur),initialValue),这里的prev和cur都是reduce()方法中function这个匿名函数的的固有参数, 而function这里被叫做迭代器(累加器)函数,菜鸟教程上是这么解释的: reduce() 方法接收一个函数作为累加器,累加器的意思我们后面再说,先看prev和cur: prev---必需。初始值, 或者计算结束后的返回值,该网站把这里的prev写作total,大家适应一下,其实是一个东西。 这里我来举个例子说明,因为至少我一眼看上去,完全不懂这说的是啥, 比如一个数组arr=[5,6,7,1,2], 如果initialValue(翻译成中文就是初始值)不写的话, prev就是arr中的5(arr中的第一个值),如果initialValue写了,那么prev的值就是initialValue。 然后来看cur这个参数,菜鸟教程上是这么解释的:必需。当前元素,也就是说这个参数cur和prev都是必传的参数, 但是当前元素是什么?我怎么知道数组中哪一个是当前元素?所以理解起来就很费劲, 这里我也来做一下解释:第一种情况,在没有写initialValue的情况下,prev就是arr中的5,而cur就是指做每一次运算的时候 除了5以外的其他元素。第二种情况,在给了initialValue的情况下,prev=initialValue,这里的意思是initialValue赋值给了prev. 而cur指的是每一次运算时数组arr中的所有元素,每一次运算可以看做是一次迭代。看到这里别急,接下来具体示例分析:
上述为reduce()作为累加器,可以应用于数组求和。接下来为大家提供reduce()应用在数组去重的使用: