Array.prototype.reduce()方法

一文带你彻底搞懂js的Array.prototype.reduce()方法!_SCUhzs-CSDN博客

 这篇文章非常详细,建议看上面的链接。这里我仅作一些简单的理解。

const a = [1,2,3,4,5]
a.reduce((pre, current)=>{
   console.log(pre);
})

上面这段代码的输出结果是

 导致undefined出现的原因是:在第一次调用的时候pre是1 ,但是第二次调用的pre,使用的是第一次调用的返回值。在这里第一次调用并没有返回值,所以显示的是undefined。

明明数组中有五个元素,最后只有四个输出的原因是:在第一次打印的时候pre为1,current为2;接下来pre为undefined,current为3.......直到current为5,最终只有四个输出。

通常可以用reduce来筛选todo中完成的有多少项,成绩大于90的有多少人这样的问题,这时候可以用到reduce的第二个参数。

const a = [3,5,7,9,11]
const res = a.reduce((pre, current)=>{
   console.log(pre,current);
   return pre + 1
},0)
console.log(res);

这样的输出结果为

 通过第二个参数设置pre的值为0,current的值就顺延至数组的第一个元素值1。这里最后一个输出结果5的原因是:最后一次遍历结果的返回值作为reduce的值。

现在假设需要对一个todoList的完成项做一个筛选,以前考虑的是filter后获取length,现在试试reduce。

        const todoList = [
            {id: 1, done: false},
            {id: 2, done: true},
            {id: 3, done: true},
            {id: 4, done: false},
            {id: 5, done: true},
        ]
        const res = todoList.reduce((pre, current)=>{
            return pre + (current.done ? 1 : 0)
        },0)
        console.log(res);    // 3

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值