JavaScript学习笔记之reduce()数组方法

一、语法

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

含义

  1. arr:表示原数组
  2. prev:表示上一次调用回调时的返回值,或者初始值init。
  3. cur:表示当前正在处理的数组元素。
  4. index:表示正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1;
  5. init:表示初始值。
  6. 常用参数为:prev和cur。

二、实例

  1. 求数组项之和
     var arr = [3,1,2];
        var sum = arr.reduce(function (prev,cur) {
            return prev+cur;
        },0);
        alert(sum);   //6
    
    
     var sumString = arr.reduce(function (prev,cur) {
            return prev+cur;
        },'');
        alert(sumString);  //'312'

     

  2. 求数组项的最大值

        var arr = [3,1,2];
        var max = arr.reduce(function (prev,cur) {
            return Math.max(prev,cur);
        });
        alert(max);  //3

     

  3. 数组去重

        var arr = [3,3,4,4,1,3,2,1,2];
        var newArr = arr.reduce(function (prev,cur) {
            prev.indexOf(cur) === -1 && prev.push(cur);
            return prev;
        },[]);
        alert(newArr);  //[3,4,1,2]

     

  4.  实现原理

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

  5. 数组降维

        var arr = [[3,3],[4,4,1],[3,2,1,2]];
        var newArr = arr.reduce(function (prev,cur) {
            return prev.concat(cur)
        },[]);
        alert(newArr); 

     

  6.  计算数组中每个元素出现的次数
        let names = ['alice','lucy','lucy','hanmeimei'];
        let nameNum = names.reduce(function (prev,cur) {
            if(cur in prev){
                prev[cur]++;
            }else {
                prev[cur] = 1;
            }
            return prev;
        },{})
        alert(nameNum);

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值