手写数组reduce方法

  • 看过其他的文章, 感觉他们实现的reduce方法不够完善, 分享一下自己写的比较完善的reduce方法, 如果错误的地方, 请留言给我
Array.prototype.newReduce = function (fn, value) {const currentArr = this;// 如果一个空数组而且没有传入初始值则报错if (currentArr.length == 0 && value == undefined) {throw ("Reduce of empty array with no initial value");}// 判断value是否有传入, 没有传入则默认使用数组中的第一个元素if (value !== undefined) { // 如果有传入, 则需要从数组的第0项开始遍历for (let i = 0; i < currentArr.length; i++) {// reduce函数可以传入四个参数, // 第一个参数为上次调用的累计值// 第二个参数为当前值// 第三个参数为当前值的索引// 第四个参数为数组本身value = fn(value, currentArr[i], i, currentArr)}} else { // 如果没有传入则默认使用数组中第一个元素作为pre, 并且从数组的第1项开始遍历value = currentArr[0];for (let i = 1; i < currentArr.length; i++) {value = fn(value, currentArr[i], i, currentArr)}}return value;
}// 测试
let arr = [1, 2, 3, 4];
console.log(arr.newReduce(function (pre, cur, index, arr) {return pre + cur
})); // 10

比较完善的手写数组reduce方法相关推荐

  1. JS进阶篇--JS数组reduce()方法详解及高级技巧

    基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被 ...

  2. JS进阶篇--JS数组reduce()方法详解及高级技巧 1

    基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被 ...

  3. 手写字符串 trim 方法,保证浏览器的兼容性

    手写字符串 trim 方法,保证浏览器的兼容性 trim() 方法删除字符串首尾空白字符 手写trim方法: String.prototype.trim = function(){return thi ...

  4. 如果数组最后一项为空删除最后一项和去前面的逗号_手写数组方法

    最近把数组的常用方法都手写了一遍,整理到了一块儿,顺便就分享出来. 注:有的方法的实现算法可能不是最好的,所以也可以根据自己的理解有不一样的实现方法,欢迎在评论区留出来. 我废话就不多说了,直接上代码 ...

  5. JS手写数组扁平化(flat)方法

    方法介绍 数组扁平化方法 Array.prototype.flat() 也叫数组拍平.数组拉平.数组降维. Array.prototype.flat() 用于将嵌套的数组"拉平", ...

  6. js 数组 reduce() 方法

    概念 reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值. MDN:https://developer.mozilla.org/zh-C ...

  7. 二维数组各行求和_JS数组reduce()方法详解及高级技巧

    reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但 ...

  8. powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法

    我们知道文件在PDM中审批完成后,可以通过流程操作将审批人员的姓名填写到对应的栏位,但是常规情况下,填写的都是电脑常规字体的签名:然而,如今越来越多的客户希望签上的是他们的手写签名.本文将介绍如何在P ...

  9. 数组reduce方法详解

    目录 前言 reduce方法 案例 数组求和 数组扁平化 数组去重 数组对象去重 前言 很多前端开发中都知道数组的reduce方法可以用来给数组求和,但是你问到里面的具体参数代表的时候什么,很多人却不 ...

最新文章

  1. 为自己给操作系统留个后门?我的安全管理经验谈
  2. BZOJ-3531-旅行
  3. WORD文档中的表格:自定义方式的批处理,增删行列和内容
  4. 带着灵魂去旅行的骑者-重新认识自我
  5. Linux如何检查目录inode占用,linux – 如何确定哪个文件/ inode占用给定扇区
  6. 取代13英寸版?苹果下半年将推出M2版MacBook Pro 14
  7. linux安装python3.7
  8. 30 天精通 RxJS(29):30 天感言
  9. C# 连接Access数据库
  10. 编程小白C语言例题4
  11. 做量化投研必须掌握的三大基本模型理论
  12. 大米云如何通过ssh连接云主机
  13. 微信管理工具用什么比较好呀
  14. GAMIT新版本10.71发布了
  15. matlab特殊符号表示,matlab特殊符号输入
  16. 调用Android原生裁剪方式裁剪图片并保存
  17. 惠普z系列服务器,惠普Z8/Z6/Z4 G4新款工作站/服务器主机:Quadro P6000 48TB存储
  18. 详解数据血缘的「整体设计」与「评价方案」
  19. 人工智能:(C语言)采用状态空间法求解八数码问题
  20. 股指期货风险管理实证研究——以2015年股灾为例实证分析/VaR/EViews

热门文章

  1. linux sar 历史负载,sar 查看历史负载
  2. python批量打印mathcad_Print Conducto全能批量打印工具
  3. C++第五章课后习题13
  4. 大数据分析需要掌握哪些技术
  5. [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
  6. 华为网络拒绝接入_网络拒绝接入什么意思
  7. python进阶课程目标 学习内容_Python学习教程(Python学习路线):第九天-面向对象进阶...
  8. Spark操作Hive分区表
  9. HBase伪分布式搭建
  10. hssfrow 单元格样式_poi的各种单元格样式以及一些常用的配置