博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS:reduce() 源码解析
阅读量:5914 次
发布时间:2019-06-19

本文共 973 字,大约阅读时间需要 3 分钟。

Array.prototype.reduce(callback, initialValue?)nitialValue为可选,写了nitialValue值那么函数的初始值为该nitialValue值,如果没有,那么函数数组的第一个值为初始值。
var arr = [1,2,5,50,3];//没有传入初始值var a = arr.reduce(function(preTotal, ele, index){    return preTotal + ele;})console.log(a);//61//传入初始值为100var b = arr.reduce(function(preTotal, ele, index){    return preTotal + ele;},100)console.log(b);//161复制代码
上面的函数中3个参数:preTotal:初始值,ele:当前元素,index:当前元素索引。详细分析如下图:(左边为a,右边为b)
var arr = [1,2,5,50,3];Array.prototype.myReduce = function(fn, init){        var len = this.length;        var pre = init;        var i = 0;        //判断是否传入初始值        if(init == undefined){            //没有传入初始值,数组第一位默认为初始值,当前元素索引值变为1。            pre = this[0];            i = 1;        }        for(i; i < len; i ++){            //当前函数返回值为下一次的初始值            pre = fn(pre, this[i], i)        }        return pre;    }    var add = arr.myReduce(function(preTotal, ele, index){        return preTotal + ele;    },100)    console.log(add);复制代码

转载地址:http://fcwvx.baihongyu.com/

你可能感兴趣的文章
咬断防盗绳偷 iPhone,月入万元不是梦
查看>>
Python爬虫实战:股票数据定向爬虫
查看>>
Facebook打破瓶颈增长惊人 但未来广告收入可能下跌
查看>>
5G时代:智慧城市革命和中国机会
查看>>
微软发布ReactXP:方便开发者构建跨平台应用
查看>>
日本经产省将向地方政府提供“物联网”扶持
查看>>
比尔盖茨:机器人抢人类工作应该交税
查看>>
翻译:The Difference Between SOA and Microservices Isn’t Size
查看>>
下一代5G移动网络的安全挑战
查看>>
Facebook正为Internet.org研发毫米波技术
查看>>
人们需要了解的有关闪存缓存的内容
查看>>
NB-IoT/LoRa/eMTC和蓝牙/WiFi互补效应的几个典型案例
查看>>
北京君正:126.22亿收购两家传感器芯片公司 布局智能生态圈
查看>>
《企业软件交付:敏捷与高效管理精要》——2.4 项目背景
查看>>
《人民的名义》霸屏,如何戏里戏外看安防?
查看>>
Runtime 类
查看>>
亲们,不用再创建变更了
查看>>
华为研发投入首破百亿美元
查看>>
投资1500万美元 思科发力SDS和全闪存存储
查看>>
FBI时隔半年再被打脸 研究者轻松破解iPhone 5C
查看>>