zoukankan      html  css  js  c++  java
  • js-reduce方法源码

    // 数组中的reduce方法源码复写
    //先说明一下reduce原理:总的一句,reduce方法主要是把数组遍历,
    //然后把数组的每个元素传入回调函数中,回调函数怎么处理,就会的到什么样的效果
    Array.prototype._reduce=function(fn,initVal){
        let pre=initVal;//对初始值进行赋值
        let i=0;//数组的出事索引值
        if(!pre){//判断是否拥有初始值,如果有传初始值,下面遍历会从零开始,否则,遍历从1开始,下面遍历的第一个的pre值默认是数组的第一位元素
            pre=this[0];
            i=1;
        }
        for(i;i<this.length;i++){
            pre=fn(pre,this[i],i);//遍历处理会调函数
        }
        return pre;//返回回调函数处理的最终结果,
    }
    
    ********************************以上时候自定义reduce源码,以下是对该方法的一些用法***************
    
    
    // 计算一个数组中某个元素出现的次数;
    let names=['张三','李四','王五','张三'];
    let nameNum=names._reduce((pre,cur)=>{
        if(cur in pre){
            pre[cur]++;
        }else{
            pre[cur]=1;
        }
        return pre;
    },{});
    console.log(nameNum);
    
    
    // 数组去重
    let nameArr=names._reduce((pre,cur)=>{
        if(pre.indexOf(cur)==-1){
            pre.push(cur);
        }
        return pre;
    },[]);
    console.log(nameArr);
    
    //将二维数组化为一维数组
    let erweiArr=[[1,3.4,5,],[2,4,6],[213],[123,123,123]];
    let yiweiArr=erweiArr.reduce((pre,cur)=>{
        pre=pre.concat(cur);
        return pre;
    },[]);
    console.log(yiweiArr);
    
    let testArr=[1,2,3];
    let sum=testArr._reduce((pre,cur)=>{
        return pre+cur;
    },10);
    console.log(sum,'sum');
  • 相关阅读:
    数据库设计——多表之间的关系
    约束
    DQL
    DML
    DDL
    Mysql——基础
    IT大牛关注链接
    deepin20安装Python3.85
    Python中的模块
    python中的装饰器
  • 原文地址:https://www.cnblogs.com/nimon-hugo/p/14632018.html
Copyright © 2011-2022 走看看