[245 Condense arrays with reduce
问题链接:https://www.freecodecamp.cn/challenges/condense-arrays-with-reduce
参考链接:JavaScript Array reduce() 方法
Reduce方法迭代数组
1.问题描述
数组方法 reduce 用来迭代一个数组,并且把它累积到一个值中。
使用 reduce 方法时,你要传入一个回调函数,这个回调函数的参数是一个 累加器 (比如例子中的 previousVal) 和当前值 (currentVal)。
reduce 方法有一个可选的第二参数,它可以被用来设置累加器的初始值。如果没有在这定义初始值,那么初始值将变成数组中的第一项,而 currentVal 将从数组的第二项开始。
下面的例子使用了 reduce 来让数组中的所有值相减:
var singleVal = array.reduce(function(previousVal, currentVal) {
return previousVal + currentVal;
}, 0);
使用 reduce 方法来让 array 中的所有值相加,并且把结果赋值给 singleVal
2.解决方案
var array = [4,5,6,7,8];
var singleVal = 0;
// 只能在这一行下面写代码
singleVal = array.reduce(function(previousVal, currentVal) {
return previousVal + currentVal;}, 0);
3.问题解释
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面理解:回调就是一个作为实参传入另一函数的函数,会在父函数执行完成后再执行。
主要用途:目前主要用于耗时操作,比如ajax请求或者文件处理等
- reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
- reduce() 可以作为一个高阶函数,用于函数的 compose
- reduce() 对于空数组是不会执行回调函数的。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
- total
必须、初始值或者计算结束后的返回累计值 - currentValue
必须、当前元素值 - index
可选、当前元素索引 - arr
可选、当前元素所属的数组对象 - initialValue
可选、传递给函数的初始值