关于前端:Arrayreduce-浅谈

34次阅读

共计 1014 个字符,预计需要花费 3 分钟才能阅读完成。

reduce() 办法是 ES5 中新增的一个数组逐项解决办法, 对数组中的每个元素执行一个特定办法,并将其后果汇总为单个返回值。
Array.prototye.reduce ES5.1 标准

语法

arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

参数

  • callback : 执行数组中每个值的函数,它同时蕴含四个参数;

    • accumulator(累计器): 累计回调的返回值,它是上次调用回调时返回的累积值,或 initialValue。
    • currentValue: 正在解决的数组中的以后元素的值。
    • index:可选,正在解决的数组中的以后元素的索引。
    • array:可选,调用 reduce() 的数组。
  • initialValue: 可选,作为第一次调用 callback 函数时的第一个参数的值。若没提供初始值,则将应用数组的第一个元素。若在没有初始值的空数组上调用 reduce 将报错。

返回值 :函数累计解决的后果。

reduce() 为数组中的每个元素顺次执行 callback 函数(数组中被删除或没赋值的元素除外 ).
回调函数第一次执行时,accumulator 和 currentValue 的取值有两种状况:

  1. 若调用 reduce() 时提供了 initialValue,则 accumulator 取值为 initialValue, currentValue 取数组中的第一个值;
  2. 若调用 reduce() 时没有提供 initialValue,则 accumulator 取数组中的第一个值,currentValue 取数组中的第二个值。

reduce() 如何运行

如果运行如下代码:

[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array){return accumulator + currentValue;});

callback 被调用四次,每次调用的参数和返回值如下表:


应用箭头函数:

[0, 1, 2, 3, 4].reduce((prev, curr) => prev + curr );

reduce() 的第二个参数提供 10 为初始值:

[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => {return accumulator + currentValue}, 10)

正文完
 0