一、reduce()
reduce()方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值
语法:
参数:回调函数(callback)[必选],initialValue[可选]
回调函数可以传入四个参数:
1、accumulator【必选】
- 累加器累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue
- 数组中正在处理的元素。
- 数组中正在处理的当前元素的索引。 如果提供了initialValue,则索引号为0,否则为索引为1。
- 调用reduce的数组
initialValue【可选】
- 用作第一个调用callback的第一个参数的值。如果没有提供初始值,则将使用数组中的第一个元素。在没有初始值的空数组上调用reduce将报错
返回值:函数累计处理的结果
回调函数第一次执行时,accumulator 和currentValue的取值有两种情况:调用reduce时提供initialValue,accumulator取值为initialValue,currentValue取数组中的第一个值;没有提供 initialValue,accumulator取数组中的第一个值,currentValue取数组中的第二个值。
注意:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。
如果数组为空且没有提供initialValue,会抛出TypeError 。如果数组仅有一个元素(无论位置如何)并且没有提供initialValue, 或者有提供initialValue但是数组为空,那么此唯一值将被返回并且callback不会被执行。
数组中所有数值的求和:
var sum = [0, 1, 2, 3].reduce(function (a, b) {
return a + b;
}, 0);
也可以使用箭头函数:
var sum= [ 0, 1, 2, 3 ].reduce(
( acc, cur ) => acc + cur,
0
);
二、every():
every()方法用于检测数组所有元素是否都符合指定条件(通过函数提供)
- every() 方法使用指定函数检测数组中的所有元素:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
注意: every() 不会改变原始数组。
语法:
array.every(function(currentValue,index,arr), thisValue)
- currentValue【必选】:当前元素的值
- index【可选】当前元素的索引
- arr【可选】当前元素属于的数组对象
thisValue:【可选】对象作为该执行回调时使用,传递给函数,用作“this”的值,如果省略 了thisValue,this值为undefined。
返回值:布尔值。如果所有元素都通过检测返回true,否则返回false
看个例子:
var arr=[1,2,3,4,5,6]
console.log(arr.every(function(item){
return item<5;
}));//false
如果使用箭头函数就是
var arr=[1,2,3,4,5,6]
console.log(arr.every(item=>item<5));//false
ok,其实主要是为了学习reduce的用法,因为刚好昨天用到了every方法,所以今天一并总结了
参考文章:MDN