小撸 array map 源码
官方的方法有时候用着确实挺好用的,那仔细想想是怎样实现的呢?自己是否可以搞一个,那就从最简单的开始吧 Array.prototype.map
要撸一个array map方法的源码,首先需要看下他的具体的定义和使用,先搞明白他的功能呀【貌似是废话哈】
官方定义
var new_array = arr.map(function callback(currentValue[, index[, array]]) {// Return element for new_array }[,
thisArg]);其实就是,只有第一个参数是必须的,其他的都是可选的,也就是函数内部处理了
var new_array = arr.map(function callback(currentValue,index,array) {// Return element for new_array },thisArg);
复制代码
参数
callback
currentValue
callback
数组中正在处理的当前元素。
index
可选
callback
数组中正在处理的当前元素的索引。
array
可选
callback
map
方法被调用的数组。
thisArg
可选
callback
函数时使用的this
值。
返回值
一个新数组,每个元素都是回调函数的结果。
描述
map
方法会给原数组中的每个元素都按顺序调用一次 callback
函数。callback
每次执行后的返回值(包括 undefined
)组合起来形成一个新数组。 callback
函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete
删除的索引则不会被调用。
举个例子 - 最简单的栗子
咱们主要是为了演示下函数功能,举个比较简单的说明下就可以
let arr=['a','b','c'];
let newArr=arr.map(function(item,index){console.log(index);return item+'A';
});输出结果
arr 不变
---------------
0
1
2
nweArr : ['aA','bA','cA']复制代码
怎样自己来实现和map一样的功能呢?
直接贴代码
Array.prototype.cusomerMap=function(cb,context){let newArr=[];for(var i=0;i<this.length;i++){if(cb && typeof cb==='function'){let val = cb.call(context,this[i],i,this);newArr.push(val);}}return newArr;
}现在想想代码好少啊,但是功能确实好用。复制代码
感觉官方的这些方法没事的时候就应该想想他们怎么写出来的,关键是这帮人怎么想的。
本文比较简单,只是为了说明现成的东西固然好用,但是要明白实现的机制!
欢迎纠错
小撸 array map 源码相关推荐
- 微信小程序官方组件展示之地图map源码
以下将展示微信小程序之地图map源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档. 功能描述: 地图(v2.7.0 起支持同层渲染). 小程序解决方 ...
- golang1.15.6 版本 map 源码笔记
当前我们基于golang 1.15.6 版本源码进行解析.关于map 的图形化记录大家可以查看惜暮大神的Golang map实践以及实现原理.我在这里就不在赘述了.接下来的部分我会重点关注map 源码 ...
- 面试官系统精讲Java源码及大厂真题 - 10 Map源码会问哪些面试题
10 Map源码会问哪些面试题 更新时间:2019-09-10 10:34:08 人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来! --奥斯特洛夫斯基 引导语 Map 在面试中,占据了很大一部 ...
- 健康菜谱微信小程序+项目前后台源码(JavaSSM+Mysql)
博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 健康菜谱微信小程序+项目前后台源码(JavaSSM+Mysql) 视频效果 ht ...
- Golang map源码详解
Golang的map是用哈希表实现的,在实现性能上非常优秀,这里会主要对map创建.插入.查询.删除以及删除全部的源码做详解,刻意避开了扩容以及迭代相关的代码,后续会用一个新的文章去讲述.Golang ...
- Go语言——map 源码分析
之前自己整理的map源码浅析,还是有些不理解的地方,这篇转载曹大的笔记,借鉴下 原文地址:https://github.com/cch123/golang-notes/blob/master/map. ...
- 源码解读_Go Map源码解读之Map迭代
点击上方蓝色"后端开发杂谈"关注我们, 专注于后端日常开发技术分享 map 迭代 本文主要是针对map迭代部分的源码分析, 可能篇幅有些过长,且全部是代码, 请耐心阅读. 源码位置 ...
- 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)
简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...
- 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)
概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...
最新文章
- cufflinks基于dataframe数据自定义绘图基于df.iplot功能
- 程序员面试题精选100题(62)-C/C++/C#面试题(5)
- python无法启动此程序、因为计算机中丢失_无法启动此程序,因为计算机中丢失*.DLL...
- 前端与java绘制三维图_使用HTML5 Canvas绘制三维波浪图算法和实现
- Storm Trident示例shuffleparallelismHint
- 【渝粤教育】国家开放大学2018年春季 0408-21T管理学基础 参考试题
- Bash递归函数计算斐波纳吉(fibonacci)数列
- ubuntu恢复出厂设置_苹果恢复出厂设置,小编告诉你苹果手机怎么恢复出厂设置?...
- python编程自学好学吗 ?
- python词云分析 jieba+wordcloud 按词频生成词云
- 第11章 枚举与泛型
- 分析在线直播答题应用基础架构
- 一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”
- JavaScript 专题(九)数组中查找指定元素
- 【随堂笔记】数据结构基础
- 乾颐堂2月HCIE、CCIE pass集合,洋洋洒洒21名同学
- 手机QQ协议抓包教程
- matlab2019 编译器_方舟编译器学习
- 病毒分析系列3 | 初步动态分析工具使用
- dart语言基础_变量声明
热门文章
- Dataguard配置前提条件
- [导入]ASP.Net环境下使用Jmail组件发送邮件
- Oracle DBlink相关
- [HNOI2011]数学作业 分段矩阵乘法
- Kattis - bela
- HDU 4946 Area of Mushroom 凸包
- 判断字符串中只含有字母和问题
- 计算机:2014年考研大纲解析之数据结构
- 爬取网页时自动获取网页编码信息,并对特殊的乱码页面(压缩过的网页内容)用gzip进行解码。...
- ASP.NET MVC2+MSSQL+Godaddy