官方的方法有时候用着确实挺好用的,那仔细想想是怎样实现的呢?自己是否可以搞一个,那就从最简单的开始吧 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 源码相关推荐

  1. 微信小程序官方组件展示之地图map源码

    以下将展示微信小程序之地图map源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档. 功能描述: 地图(v2.7.0 起支持同层渲染). 小程序解决方 ...

  2. golang1.15.6 版本 map 源码笔记

    当前我们基于golang 1.15.6 版本源码进行解析.关于map 的图形化记录大家可以查看惜暮大神的Golang map实践以及实现原理.我在这里就不在赘述了.接下来的部分我会重点关注map 源码 ...

  3. 面试官系统精讲Java源码及大厂真题 - 10 Map源码会问哪些面试题

    10 Map源码会问哪些面试题 更新时间:2019-09-10 10:34:08 人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来! --奥斯特洛夫斯基 引导语 Map 在面试中,占据了很大一部 ...

  4. 健康菜谱微信小程序+项目前后台源码(JavaSSM+Mysql)

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 健康菜谱微信小程序+项目前后台源码(JavaSSM+Mysql) 视频效果 ht ...

  5. Golang map源码详解

    Golang的map是用哈希表实现的,在实现性能上非常优秀,这里会主要对map创建.插入.查询.删除以及删除全部的源码做详解,刻意避开了扩容以及迭代相关的代码,后续会用一个新的文章去讲述.Golang ...

  6. Go语言——map 源码分析

    之前自己整理的map源码浅析,还是有些不理解的地方,这篇转载曹大的笔记,借鉴下 原文地址:https://github.com/cch123/golang-notes/blob/master/map. ...

  7. 源码解读_Go Map源码解读之Map迭代

    点击上方蓝色"后端开发杂谈"关注我们, 专注于后端日常开发技术分享 map 迭代 本文主要是针对map迭代部分的源码分析, 可能篇幅有些过长,且全部是代码, 请耐心阅读. 源码位置 ...

  8. 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)

    简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...

  9. 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)

    概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...

最新文章

  1. cufflinks基于dataframe数据自定义绘图基于df.iplot功能
  2. 程序员面试题精选100题(62)-C/C++/C#面试题(5)
  3. python无法启动此程序、因为计算机中丢失_无法启动此程序,因为计算机中丢失*.DLL...
  4. 前端与java绘制三维图_使用HTML5 Canvas绘制三维波浪图算法和实现
  5. Storm Trident示例shuffleparallelismHint
  6. 【渝粤教育】国家开放大学2018年春季 0408-21T管理学基础 参考试题
  7. Bash递归函数计算斐波纳吉(fibonacci)数列
  8. ubuntu恢复出厂设置_苹果恢复出厂设置,小编告诉你苹果手机怎么恢复出厂设置?...
  9. python编程自学好学吗 ?
  10. python词云分析 jieba+wordcloud 按词频生成词云
  11. 第11章 枚举与泛型
  12. 分析在线直播答题应用基础架构
  13. 一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”
  14. JavaScript 专题(九)数组中查找指定元素
  15. 【随堂笔记】数据结构基础
  16. 乾颐堂2月HCIE、CCIE pass集合,洋洋洒洒21名同学
  17. 手机QQ协议抓包教程
  18. matlab2019 编译器_方舟编译器学习
  19. 病毒分析系列3 | 初步动态分析工具使用
  20. dart语言基础_变量声明

热门文章

  1. Dataguard配置前提条件
  2. [导入]ASP.Net环境下使用Jmail组件发送邮件
  3. Oracle DBlink相关
  4. [HNOI2011]数学作业 分段矩阵乘法
  5. Kattis - bela
  6. HDU 4946 Area of Mushroom 凸包
  7. 判断字符串中只含有字母和问题
  8. 计算机:2014年考研大纲解析之数据结构
  9. 爬取网页时自动获取网页编码信息,并对特殊的乱码页面(压缩过的网页内容)用gzip进行解码。...
  10. ASP.NET MVC2+MSSQL+Godaddy