博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你真的了解map方法吗?手动实现数组map方法。
阅读量:3890 次
发布时间:2019-05-23

本文共 922 字,大约阅读时间需要 3 分钟。

1.首先,我们来了解下使用map方法注意的要点

注意:下面所说的回调函数,非箭头函数!!!

  • 所需参数,一个回调函数,一个用于改变回调函数内部this的参数。
    看个示例:
const obj = {
name: 'ha', age: 12}const arr = [1, 3, , 4];// 原生mapconst newArr = arr.map(function (ele, index, arr) {
console.log(this); return ele + 2; }, obj);console.log(newArr);

结果如下:

在这里插入图片描述
上面这个图,也能说明跳过了空项,因为this只输出了三遍!!!

  • 回调函数接受三个参数。分别为:数组元素,元素索引,原数组本身
  • map方法执行的时候,会自动跳过未被赋值或者被删除的索引
  • map方法返回一个新数组,而且不会改变原数组。当然,你想改变也是可以的,通过回调函数的第三个参数,即可改变原数组。

2.知道了map执行机制,我们来手动实现自己的map方法。

// 我的map方法Array.prototype.myMap = function (callback, context) {
// context参数就是用来改变回调函数内部this的 var newArr = []; for (var i = 0; i < this.length; i++) {
// 简单处理空项 this[i] ? newArr.push(callback.call(context, this[i], i, this)) : newArr.push(this[i]); } return newArr;}const newArr2 = arr.myMap(function (ele, index) {
console.log(this); return ele + 2; }, /\w/g) // 用正则,尝试改变回调函数的内部thisconsole.log(newArr2);

结果如下:

在这里插入图片描述

转载地址:http://nwxhn.baihongyu.com/

你可能感兴趣的文章
Ubuntu安装后的一些配置
查看>>
ubuntu9.10 tftp服务设置(这个绝对好使)
查看>>
关于UNIXDOMAIN协议的接收发送者验证
查看>>
I/O操作上设置超时之alarm闹钟法
查看>>
查看返回接收到UDP数据包的宿地址结构--(适用于LINUX和BSD系统)
查看>>
如何开启_GNU_SOURCE宏
查看>>
从网上搜索到的一些关于pcap源代码,入门级的
查看>>
Linux—— Posix IPC
查看>>
在ubuntu下安装ACE编译环境
查看>>
公司HR面试经常问的问题及回答思路
查看>>
ACE之反应堆学习(一)
查看>>
apache配置
查看>>
快速精通FRAME
查看>>
msf反弹木马之免杀
查看>>
写一个简单的python爬虫程序,爬取一下百度图片
查看>>
简单Dos命令以及批处理
查看>>
使用python执行cmd命令
查看>>
利用python脚本实现一招断网
查看>>
10行代码教你用python进行Dos攻击
查看>>
完善了一点的爬虫
查看>>