昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧

今天就来实现一个简单的map方法

首先我们来看一下map方法的使用以及具体的参数

        var arr = ["a","b","c","d","e"];arr.map(function(currentValue,index,arr){console.log("当前元素"+currentValue)       console.log("当前索引"+index)console.log("数组对象"+arr)})

map的参数:

currentValue  必须。当前元素的值

index  可选。当期元素的索引值

arr  可选。当期元素属于的数组对象

运行结果:

我们先来屡屡思路,直接Array.map()就可以调用到map方法,那他应该是在原型链上的,然后接收一个匿名函数做参数,通过循环调用传入的匿名函数

下面我们来写一下试试

Array.prototype.newMap = function(fn) {
var newArr = [];
for(var i = 0; i<this.length; i++){
newArr.push(fn(this[i],i,this))
}
return newArr;
}

来,调用一下试一下子

        arr.newMap((currentValue,index,arr)=>{console.log("newMap当前元素"+currentValue)console.log("newMap当前索引"+index)console.log("newMap数组对象"+arr)})

运行结果:

  

可以看到我们的运行结果是完全一样的,到这里简单的map方法就实现了,可能有一些细节没注意到,没关系,只是给大家一个思路而已

转载于:https://www.cnblogs.com/suihang/p/10535002.html

JS模拟实现数组的map方法相关推荐

  1. 数组的Map方法详解

    作用 map():创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成. 语法 arr.map(callback(currentValue [, index [, arra ...

  2. js中给数组添加元素的方法有哪些

    js中给数组添加元素的方法有哪些 unshift:将参数添加到原数组开头,并返回数组的长度 pop:删除原数组最后一项,并返回删除元素的值:如果数组为空则返回undefined push:将参数添加到 ...

  3. 数组的map方法返回值

    先说一下数组map方法的使用: map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值. map() 方法按照原始数组元素顺序依次处理元素. 注意: map() 不会对空数组进行 ...

  4. php array_push 二维数组,arraypush js二维数组push的方法

    用array_push给数组添加一个属性值 用array_push给数组添加一个属性值,如果是直接添加$a可以,但是如果要(1)如果你的数组是一维数组: 如: $arr = array('id'=&g ...

  5. js数组的map方法以及parseInt方法

    无意看到一个方法: ["1", "2", "3"].map(parseInt); 返回值为:[1, NaN, NaN]. 好奇查了下map方 ...

  6. js数组的map方法

    map():返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值,map()方法按照原始数组元素顺序依次处理元素 map方法会给原数组中的每个元素都按顺序调用一次callback函数,call ...

  7. js中的数组对象排序(方法sort()详细介绍)

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...

  8. JS 常用字符串数组遍历函数方法整理

    目录 一.concat() 二.join() 三.push() 四.pop() 五.shift() 六.unshift() 七.slice() 九.substring() 和 substr() 十.s ...

  9. js es6使用数组的every方法遇到的问题

    最近在看js数据结构和算法的书,并且把书里面的案例敲了一遍,在集合这一章里面,在封装集合子集的时候是这样封装的, isSubsetOf(otherSet) { if (this.size() > ...

最新文章

  1. 漫画 | 如果程序员的妈是产品经理,她会如何逼你结婚?
  2. java填空题 在非静态成员方法中_Java学习(四): 类的使用
  3. Oracle原理:11g中的网络配置
  4. 关于 MSDN 收藏夹
  5. 十位数和个位数交换python_Python实现100以内十位数数字比个位数数字小的数
  6. python怎么定义正方形函数_python – Matplotlib自定义图例以显示正方形而不是矩形...
  7. python pdf转word 表格_太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!
  8. 【Python】Python库之网络爬虫
  9. docker私有仓库Harbor 使用文档
  10. python 数据结构 树 dev get items_python数据结构之树(二叉树的遍历)
  11. 线性表java实现之顺序存储源码
  12. mysql大数据高并发处理
  13. 2.PCIe协议分析
  14. 云服务器 微信支付开发,WeX5怎么样实现支付宝和微信支付接口
  15. 怎么查python题答案_超星尔雅Python语言应用查题教程
  16. matlab中怎么使用数组,matlab中数组的基本使用
  17. css 使图片变清晰
  18. Netty中ChannelOption属性含义
  19. 基于深度强化学习的完全AI自动的俄罗斯方块游戏
  20. matlab仿真平台式惯导

热门文章

  1. lia人是什么意思_老话说“人穷别说话,位卑莫劝人”,什么意思?有何道理?...
  2. python 规则引擎 drools_Drools规则引擎详解-常用的drl实例
  3. python平稳性检验_Python中非平稳时间序列的处理
  4. php上传文件类插件,JQueryfileupload插件实现文件上传功能_jquery
  5. 最受推荐的 9本全栈开发书籍,助web前端开发学习
  6. qpsk的matlab平方根升余,【求助】求助:【QPSK功率谱密度的matlab的代码】 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  7. java可选项_在Java中链接可选项8
  8. 宝塔定时任务执行php源码任务_在WINDOWS任务计划程序下执行PHP文件 PHP定时功能的实现...
  9. 360安全卫士电脑版_卸载360安全卫士!保护你的电脑安全
  10. python程序源码百行_百行python代码,轻松完成贪吃蛇小游戏