前端面试题:javascript中reduce的用法?

前端面试题:javascript中reduce的用法?

reduce是一个用于数组的一个方法,虽然平时用的时候不多,但是熟悉了解了它的用法之后,会慢慢真香啦,可以帮助很快实现一些业务逻辑比较复杂的操作,加快代码的开发效率,会喜欢上用它啦~

1.语法:

arr.reduce(function(prev,cur,index,arr){
...
}, init);

其中:

arr:表示原数组,

prev:表示上一次回调时的返回值或者计算结束后的返回值,或者初始值init

cur:表示当前正在处理的数组元素

index:表示当前正在处理的数组元素的索引,若提供init的值,则索引为0,否则索引为1

prev,cur的值是必需项,arr,index是可选项

2.例子

1.求数组项之和:
var arr=[4,3,5,6,7,8,30];
var sum=arr.reduce(function(pre,cur){
    return pre+cur
},0)

上面代码中,传入的初始值是0,所以刚开始的时候pre的值是0,然后对arr数组进行遍历,cur的值为数值第一项,0+4相加之后返回44是计算后的值作为下一轮回调的pre的值,然后继续与数组的下一项进行相加,即4+3=7,以此类推,直到遍历完所有数组项计算完并返回

数组去重

2.数组去重
var newArr = arr.reduce(function (prev, cur) {
    prev.indexOf(cur) === -1 && prev.push(cur);
    return prev;
},[]);

上面代码的原理是:

① 初始化一个空数组[ ]
② 将需要去重处理的数组中的第1项在初始化数组[ ]中查找,如果找不到(空数组中肯定找不到),就将该项添加到初始化数组[ ]中
③ 将需要去重处理的数组中的第2项在初始化数组[ ]中查找,如果找不到,就将该项继续添加到初始化数组[ ]中
④ ……
⑤ 将需要去重处理的数组中的第n项在初始化数组[ ]中查找,如果找不到,就将该项继续添加到初始化数组[ ]
⑥ 将这个
初始化数组
[ ]返回

3.其他用法

 todoTotall(){
        return this.todos.reduce((pre,cur)=>{
          return pre+(cur.done?1:0);
        },0)

上面代码中:pre的初始值是0,cur是当前的this.todos的数组,通过遍历cur的值,判断它的done值是否为true,如果为true,就和当前pre的值加1,为false0,并作为pre下一次的回调的值,直到遍历完cur的值并返回结果。

注:当然,通过上面几个例子了解了reduce的原理后,reduce还可以用于数组其他的处理逻辑里来加快代码的编写啦,有什么不懂的评论区留言哦~如果觉得我的文章对你有帮助,小手手点赞支持一下下啦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女码农୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值