函数式编程的高逼格reduce()方法

mac2025-02-18  8

函数式编程的高逼格reduce()方法

reduce()方法

最近在做项目时,用到了reduce()方法,就总结了一下该方法的用法。

定义

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

参数

参数描述function(total,currentValue, currentIndex,arr)必需。用于执行每个数组元素的函数。total必需。初始值, 或者计算结束后的返回值。currentValue必需。当前元素。currentIndex可选。当前元素的索引。arr可选。当前元素所属的数组对象。initialValue可选。传递给函数的初始值。

用法

求数组项之和 let arr = [23, 34, 6, 67,10] let totalSum = arr.reduce((total, num) => { return total + num //加乘均可 }) console.log(totalSum) //140 求数组项最大值 let arr = [23, 34, 6, 67,10] let max = arr.reduce((prev, cur) => { return Math.max(prev, cur) // Math.min(prev, cur) 求数组项最小值 }) console.log(max) // 67 数组去重 let arr = [23, 34, 6, 23, 67,6] let newArr = arr.reduce((pre, cur) => { if (!pre.includes(cur)) { return pre.concat(cur) } else { return pre } }, []) console.log(newArr) // [23, 34, 6, 67] 将二维数组转化为一维 let arr = [[0, 1], [2, 3], [4, 5]] let newArr = arr.reduce((pre, cur) => { return pre.concat(cur) }, []) console.log(newArr); // [0, 1, 2, 3, 4, 5] 对象里的属性求和 var result = [ { subject: 'math', score: 10 }, { subject: 'chinese', score: 20 }, { subject: 'english', score: 30 } ]; var totalSum = result.reduce((prev, cur) => { return cur.score + prev }, 0); console.log(totalSum) //60
最新回复(0)