使用 reduce 实现数组 map 方法
//使用 reduce 实现数组 map 方法
const selfMap2 = function (fn, context){
let arr = Array.prototype.slice.call(this)
// 这种实现方法和循环的实现方法有异曲同工之妙,利用reduce contact起数组中每一项
// 不过这种有个弊端,会跳过稀疏数组中为空的项
return arr.reduce((pre, cur, index) => {
return [...pre, fn.call(context, cur, index, this)]
}, [])
} Array.prototype.selfMap = selfMap2
var arr1 = [1, 2, 3]
arr1.length = 5 let arrMap = arr1.selfMap(function (x) {
return x * 2
})
// [2, 4, 6]
使用 reduce 实现数组 map 方法的更多相关文章
- JavaScript中数组map()方法
JavaScript 数组map()方法创建一个新的数组使用调用此数组中的每个元素上所提供的函数的结果.语法 ? 1 array.map(callback[, thisObject]); 下面是参数的 ...
- 循环实现数组 map 方法
//循环实现数组 map 方法 const selfMap = function (fn, context) { let arr = Array.prototype.slice.call(this) ...
- 数组map方法与如何使用ES5实现
数组map方法与如何使用ES5实现 JavaScript Array map() 方法 定义 map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值. map() 方法按照原始数 ...
- 归约函数reduce&映射数组map(笔记)
function forEach(array,action){ ;i<array.length;i++) action(array[i]); } function reduce(combine, ...
- Array(数组)--map方法
关于Array.prototype.map() MDN 给的定义是: 在作用数组元素的每一项上调用一个方法(callback),返回一个新数组: 使用格式:arr.map(callback[,this ...
- js 数组 map方法
https://www.cnblogs.com/xuan52rock/p/4460949.html https://jingyan.baidu.com/article/91f5db1b7453471c ...
- ES6 数组遍历方法的实战用法总结(forEach,every,some,map,filter,reduce,reduceRight,indexOf,lastIndexOf)
目录 forEach every some map filter reduce && reduceRight indexOf lastIndexOf 前言 ES6原生语法中提供了非常多 ...
- 聊一聊数组的map、reduce、foreach等方法
聊聊数组遍历方法 JS 数组的遍历方法有好几个: every some filter foreach map reduce 接下来我们来一个个地交流下. every() arr.every(callb ...
- 数组reduce和map方法
1.有一个长度为100的数组,请以优雅的方式求出该数组的前10个元素之和 var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],sum ...
随机推荐
- Ubuntu linux 返回上一次访问的目录
cd - (cd空格 减号)返回最近一次访问的目录 这个非常方便.平时经常用终端切换目录,能够方便地回到原来的目录就很爽了. jiqing@jiqing-pad:/usr/local/redis/sr ...
- python dns server开源列表 TODO
基于dns lib的,https://github.com/andreif/dnslib 有:https://www.cnblogs.com/anpengapple/p/5664500.html ht ...
- [Usaco2018 Feb] New Barns
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5192 [算法] 维护树的直径,在树上离一个点最远的点一定是一条直径的端点. ...
- ubuntu搭建Gerrit代码审核服务器
谷歌的 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的 repo,另外一个重要的创新就是 Gerrit —— 代码审核服务器.Gerrit 为 git 引入 ...
- JAVA JVM 流程一
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机 ...
- rpm安装总结(转载)
转自:http://www.cnblogs.com/nuke/archive/2009/03/03/1402067.html 在RedHat Linux和Mandrake等兼容RedHat的发行版中, ...
- 洛谷 P1081 开车旅行【双向链表+倍增】
倍增数组的20和N写反了反复WAWAWA-- 注意到a和b在每个点上出发都会到一个指定的点,所以这样构成了两棵以n点为根的树 假设我们建出了这两棵树,对于第一问就可以枚举起点然后倍增的找出ab路径长度 ...
- bzoj 4584: [Apio2016]赛艇【dp】
参考:https://www.cnblogs.com/lcf-2000/p/6809085.html 设f[i][j][k]为第i个学校派出的赛艇数量在区间j内,并且区间j内共有k个学校的方案数 把数 ...
- 阿里云CentOS7.4启动Tomcat9没有报错,端口已经开放,但是浏览器一直等待响应解决办法7
tomcat9,启动和退出均无报错.centOS7.4防火墙已关闭,阿里云防火墙已经开放端口,telnet测试服务器的端口也通过了,**浏览器访问以后没有提示"无法访问",而是一直 ...
- Quartz.NET一个开源的作业调度框架
Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...