JavaScript的Reduce用法

MDN定义

reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
语法arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

参数

  • 1、callback执行数组中每个值 的函数
    • 1-1、Accumulator (acc) (累计器)
    • 1-2、Current Value (cur)(当前值)
    • 1-3、Current Index (idx)(当前索引)
    • 1-4、Source Array (src)(源数组)
  • 2、作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素.
const arr = [1,2,3,4]
const result = arr.reduce((t,v)=>t+v)
// 或者
const result = arr.reduce((t,v)=>t+v,0)
console.log(result) //10

注意:对空数组调用reduce()和reduceRight()是不会执行其回调函数的,可认为reduce()对空数组无效。

用法

累加累乘

function accumulation(arr) {
  return arr.reduce((t, v) => t + v, 0)
}
function multiplication(arr) {
  return arr.reduce((t, v) => t * v, 1)
}
console.log(accumulation([1, 2, 3, 4])) //10
console.log(multiplication([1, 2, 3, 4])) //24

数组分隔

function Chunk(arr = [], size = 1) {
  return arr.length
    ? arr.reduce(
        (t, v) => (
          t[t.length - 1].length === size
            ? t.push([v])
            : t[t.length - 1].push(v),
          t
        ),
        [[]]
      )
    : []
}
console.log(Chunk([1,2,3,4,5], 2)) //[ [ 1, 2 ], [ 3, 4 ], [ 5 ] ]

你可能感兴趣的:(JavaScript的Reduce用法)