js中的reduce和every方法详解

一、reduce()

reduce()方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值

 语法:

参数:回调函数(callback)[必选],initialValue[可选]

回调函数可以传入四个参数: 

1、accumulator【必选】

  • 累加器累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue
2、currentValue【必选】
  • 数组中正在处理的元素。
3、currentIndex【可选】
  • 数组中正在处理的当前元素的索引。 如果提供了initialValue,则索引号为0,否则为索引为1。
4、array【可选】
  • 调用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() 不会对空数组进行检测。

注意: 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScriptreduce()方法是一个高阶函数,它可以将一个数组的所有元素通过回调函数进行累加,最终返回一个值。reduce()方法接收一个回调函数作为累加器,该回调函数可以接收四个参数:累加器(prev)、当前值(currentValue)、当前索引(currentIndex)和数组本身(arr),同时也可以接收一个可选的初始值(initialValue)作为累加器的初始值。 下面是一个使用reduce()方法计算数组元素总和的例子: ```javascript const arr = [1, 2, 3, 4, 5]; const sum = arr.reduce((prev, currentValue) => prev + currentValue, 0); console.log(sum); // 输出:15 ``` 在上面的例子reduce()方法的第一个参数是一个回调函数,该函数接收两个参数:累加器(prev)和当前值(currentValue),并将它们相加。reduce()方法的第二个参数是累加器的初始值,这里设置为0。 另外,如果不提供初始值,reduce()方法会默认使用数组的第一个元素作为累加器的初始值,并从数组的第二个元素开始执行回调函数。 下面是一个使用reduce()方法将二维数组转换为一维数组的例子: ```javascript const arr = [[1, 2], [3, 4], [5, 6]]; const flatArr = arr.reduce((prev, currentValue) => prev.concat(currentValue), []); console.log(flatArr); // 输出:[1, 2, 3, 4, 5, 6] ``` 在上面的例子reduce()方法的第一个参数是一个回调函数,该函数接收两个参数:累加器(prev)和当前值(currentValue),并使用concat()方法将它们合并为一个数组。reduce()方法的第二个参数是累加器的初始值,这里设置为空数组。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值