什么是累加器方法
在 ECMAScript 2017 中引入了一些新的累加器方法。累加器方法是用于数组的方法,在每一个数组元素上应用函数,并将结果汇聚成为一个单一的值。累加器方法包括 reduce()、reduceRight()、flatMap() 和 flat()。
reduce()方法
reduce() 方法将一个函数作为参数,这个函数接受两个参数,第一个参数是累加器累加的结果,第二个参数是当前正在被处理的元素。reduce() 方法可以接受一个初始值,如果提供了初始值,则从初始值开始计算,如果未提供初始值,则从数组的第一个元素开始计算。
语法
arr.reduce(callback[, initialValue])
参数
- callback:要执行的函数,它接受四个参数:
- accumulator:累加器累加的结果。
- currentValue:当前正在被处理的元素。
- currentIndex(可选):当前元素的下标。
- array(可选):数组本身。
- initialValue(可选):初始值,如果没有提供初始值,则从数组的第一个元素开始。
示例
const array = [1, 2, 3, 4]; const sum = array.reduce((accumulator, currentValue) => { return accumulator + currentValue; }); console.log(sum); // 输出 10
上面的代码将对数组进行求和,最终的结果为 10。
reduceRight() 方法
reduceRight() 方法与 reduce() 方法相同,不同之处在于 reduceRight() 是从数组的最后一个元素开始计算。
语法
arr.reduceRight(callback[, initialValue])
参数
- 与 reduce() 方法相同。
示例
const array = [1, 2, 3, 4]; const sum = array.reduceRight((accumulator, currentValue) => { return accumulator + currentValue; }); console.log(sum); // 输出 10
上面的代码与 reduce() 方法的示例相同,不同之处在于 reduceRight() 方法是从数组的最后一个元素开始计算的。
flatMap() 方法
flatMap() 方法先对数组中的每个元素执行一个映射函数,然后将映射函数的结果用 flatten() 方法转换成一个扁平的数组。
语法
arr.flatMap(callback[, thisArg])
参数
- callback:对数组中的每个元素进行映射的函数。
- thisArg(可选):执行 callback 函数时使用的 this 值。
示例
const array = [1, 2, 3, 4]; const result = array.flatMap(item => [item, item * 2]); console.log(result); // 输出 [1, 2, 2, 4, 3, 6, 4, 8]
上面的代码将数组中的每个元素映射成一个数组,然后使用 flatten() 方法将这些数组合并成为一个扁平的数组。
flat() 方法
flat() 方法将嵌套的数组转换成为一个扁平的数组。
语法
arr.flat([depth])
参数
- depth(可选):指定要递归的深度,默认值为 1。
示例
const array = [1, [2, [3, [4]], 5]]; const result = array.flat(Infinity); console.log(result); // 输出 [1, 2, 3, 4, 5]
上面的代码将一个嵌套的数组转换成为一个扁平的数组。
总结
ECMAScript 2017 中引入了一些新的累加器方法,这些方法包括 reduce()、reduceRight()、flatMap() 和 flat()。这些方法可以用于非常多的不同用途,比如对数组进行求和、计算平均值、合并数组等等。在实际工作中,我们可以根据不同的需求来选择合适的累加器方法,从而提高我们的工作效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645f69b6968c7c53b016fd38