reduce 方法是一个数组的迭代方法,和map 、filter 不同,reduce 方法可缓存一个变量,迭代时我们可以操作这个变量,然后返回它。
这是我大白话的解释,可能还是不容易理解,下面看例子吧 1. 数组累加数组累加是项目经常遇到的,比如计算商品总价等,使用reduce 就可以一行代码搞定,而且不用定义外部变量,reduce是完全无副作用的函数。 // 累加[1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => a + i);// 输出:36// 累加,默认一个初始值[1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => a + i, 5);// 输出:41// 累乘[1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => a * i);// 输出:40320 2. 找出数组最大值在数组每次的迭代中,我们使用Math.max 获取最大值并返回,最后我们将得到数组所有项目的最大值。 [1, 2, 3, 4, 5, 6, 7, 8].reduce((a, i) => Math.max(a, i)); 当然如果数组每项都是数字我们可以使用...展开运算符和Math.max 配合。 Math.max(...[1, 2, 3, 4, 5, 6, 7, 8]); 3. 处理不规则数组通过map 和reduce 配合使用,返回每个子数组拼接好的结果。 |