比较完善的手写数组reduce方法
手写数组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方法相关推荐
- JS进阶篇--JS数组reduce()方法详解及高级技巧
基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被 ...
- JS进阶篇--JS数组reduce()方法详解及高级技巧 1
基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被 ...
- 手写字符串 trim 方法,保证浏览器的兼容性
手写字符串 trim 方法,保证浏览器的兼容性 trim() 方法删除字符串首尾空白字符 手写trim方法: String.prototype.trim = function(){return thi ...
- 如果数组最后一项为空删除最后一项和去前面的逗号_手写数组方法
最近把数组的常用方法都手写了一遍,整理到了一块儿,顺便就分享出来. 注:有的方法的实现算法可能不是最好的,所以也可以根据自己的理解有不一样的实现方法,欢迎在评论区留出来. 我废话就不多说了,直接上代码 ...
- JS手写数组扁平化(flat)方法
方法介绍 数组扁平化方法 Array.prototype.flat() 也叫数组拍平.数组拉平.数组降维. Array.prototype.flat() 用于将嵌套的数组"拉平", ...
- js 数组 reduce() 方法
概念 reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值. MDN:https://developer.mozilla.org/zh-C ...
- 二维数组各行求和_JS数组reduce()方法详解及高级技巧
reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但 ...
- powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法
我们知道文件在PDM中审批完成后,可以通过流程操作将审批人员的姓名填写到对应的栏位,但是常规情况下,填写的都是电脑常规字体的签名:然而,如今越来越多的客户希望签上的是他们的手写签名.本文将介绍如何在P ...
- 数组reduce方法详解
目录 前言 reduce方法 案例 数组求和 数组扁平化 数组去重 数组对象去重 前言 很多前端开发中都知道数组的reduce方法可以用来给数组求和,但是你问到里面的具体参数代表的时候什么,很多人却不 ...
最新文章
- 为自己给操作系统留个后门?我的安全管理经验谈
- BZOJ-3531-旅行
- WORD文档中的表格:自定义方式的批处理,增删行列和内容
- 带着灵魂去旅行的骑者-重新认识自我
- Linux如何检查目录inode占用,linux – 如何确定哪个文件/ inode占用给定扇区
- 取代13英寸版?苹果下半年将推出M2版MacBook Pro 14
- linux安装python3.7
- 30 天精通 RxJS(29):30 天感言
- C# 连接Access数据库
- 编程小白C语言例题4
- 做量化投研必须掌握的三大基本模型理论
- 大米云如何通过ssh连接云主机
- 微信管理工具用什么比较好呀
- GAMIT新版本10.71发布了
- matlab特殊符号表示,matlab特殊符号输入
- 调用Android原生裁剪方式裁剪图片并保存
- 惠普z系列服务器,惠普Z8/Z6/Z4 G4新款工作站/服务器主机:Quadro P6000 48TB存储
- 详解数据血缘的「整体设计」与「评价方案」
- 人工智能:(C语言)采用状态空间法求解八数码问题
- 股指期货风险管理实证研究——以2015年股灾为例实证分析/VaR/EViews
热门文章
- linux sar 历史负载,sar 查看历史负载
- python批量打印mathcad_Print Conducto全能批量打印工具
- C++第五章课后习题13
- 大数据分析需要掌握哪些技术
- [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
- 华为网络拒绝接入_网络拒绝接入什么意思
- python进阶课程目标 学习内容_Python学习教程(Python学习路线):第九天-面向对象进阶...
- Spark操作Hive分区表
- HBase伪分布式搭建
- hssfrow 单元格样式_poi的各种单元格样式以及一些常用的配置