如何用JS模拟实现数组的map方法
昨天使用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方法就实现了,可能有一些细节没注意到,没关系,只是给大家一个思路而已
以上就是如何用JS模拟实现数组的map方法的详细内容,更多关于JS模拟实现数组的map方法的资料请关注我们其它相关文章!
相关推荐
-
JavaScript模拟数组合并concat
定义和用法 concat() 方法用于连接两个或多个数组. 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 语法 arrayObject.concat(arrayX,arrayX,......,arrayX) 参数 描述 arrayX 必需.该参数可以是具体的值,也可以是数组对象.可以是任意多个. 返回值 返回一个新的数组.该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的.如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是
-
JS模拟实现ECMAScript5新增的数组方法
ECMAScript5 新增了十个数组方法,这些方法只有在ie9及以上浏览器中可以被使用,下面是对于这些方法的模拟实现. 一.Array.isArray(element) 该方法用于判断传入的对象是否为数组类型,返回true和false. Array.newIsArray = function(element){ return Object.prototype.toString.call(element).slice(8,-1).toLocaleLowerCase() === 'array';
-
如何用JS模拟实现数组的map方法
昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下map方法的使用以及具体的参数 var arr = ["a","b","c","d","e"]; arr.map(function(currentValue,index,arr){ console.log(&qu
-
关于JS中二维数组的声明方法
如下所示: var myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一维长度为2 myarr[i]=new Array(); //再声明二维 for(var j=0;j<3;j++){ //二维长度为3 myarr[i][j]=i+j; // 赋值,每个数组元素的值为i+j } } 以上就是小编为大家带来的关于JS中二维数组的声明方法的全部内容了,希望对大家有所帮助,多多支持我们~
-
JS模拟键盘打字效果的方法
本文实例讲述了JS模拟键盘打字效果的方法.分享给大家供大家参考.具体如下: 这里使用JS模拟实现软键盘及打字效果,点击软键盘年的字母键,文本框中即可显示文字,像是键盘打字的效果,美工不太好,没怎么美化,CSS高手可美化一下按钮,看上去还挺不错吧,我觉得. 先来看看运行效果图: 具体代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb23
-
JS简单实现数组去重的方法分析
本文实例讲述了JS简单实现数组去重的方法.分享给大家供大家参考,具体如下: var arr = ['abc','abcd','sss','2','d','t','2','ss','f','22','d']; //定义一个新的数组 var s = []; //遍历数组 for(var i = 0;i<arr.length;i++){ if(s.indexOf(arr[i]) == -1){ //判断在s数组中是否存在,不存在则push到s数组中 s.push(arr[i]); } } consol
-
JS简单实现数组去重的方法示例
本文实例讲述了JS简单实现数组去重的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>JS数组去重</title> <meta http-equiv=&
-
在JavaScript中操作数组之map()方法的使用
JavaScript 数组map()方法创建一个新的数组使用调用此数组中的每个元素上所提供的函数的结果. 语法 array.map(callback[, thisObject]); 下面是参数的详细信息: callback : 从当前的元素函数产生新的数组的元素. thisObject : 对象作为该执行回调时使用 返回值: 返回创建数组 兼容性: 这种方法是一个JavaScript扩展到ECMA-262标准;因此它可能不存在在标准的其他实现.为了使它工作,你需要添加下面的脚本代码在顶部: if
-
js模拟实现Array的sort方法
JavaScript的Array对象有一个sort方法,用于实现对数组元素的排序,该方法默认按照数组项ASCII 字符顺序升序排列. 如[6,7,9,1,-1].sort();执行后数组变为[-1,1,6,7,9]. 对于需要降序排列或非字符串排序,该方法就不能很好的执行了. 当然,sort有一个可选参数,它能帮我们解决这个问题,通过为sort传入一个函数,sort根据函数返回值进行排序. 数组为该函数默认传入数组中的两个元素,如传入a,b,如果函数返回值大于0,则排序方式为b,a,如果返回
-
JS中的数组的sort方法使用示例
复制代码 代码如下: var values=[0,1,5,10,15]; values.sort(); alert(values);// 输出0,1,10,15,5 这是因为sort会调用每一项的toString方法进行比较,"10"比"5"小,故在前面. 要实现对数值进行排序,则需要定义一个比较函数,并将该函数传入sort. 复制代码 代码如下: function compare(value1,value2){ if(value1<value2){ retu
-
JS模拟简易滚动条效果代码(附demo源码)
本文实例讲述了JS模拟简易滚动条效果的方法.分享给大家供大家参考,具体如下: 使用Js模拟滚动条.简易模式,类似手机上常见的滚动条. 效果如下: Js代码如下: var scrollMoveObj = null, scrollPageY = 0, scrollY = 0; var scrollDivList = new Array(); // obj需要添加滚动条的对象 w滚动条宽度 className滚动条样式名称 // obj元素 必须指定高度,并设置overflow:hidden; //
-
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
1.jquery grep()筛选遍历数组(可以得到反转的数组) // 1.jquery grep()筛选遍历数组(可以得到反转的数组) var array = [1,5,9,3,12,4,48,98,4,75,2,10,11]; var filterArray = $.grep(array,(currentValue) => { return currentValue > 10; }); console.log(`${filterArray}---${filterArray.length}`
随机推荐
- MySQL的隐式类型转换整理总结
- 利用Node.JS实现邮件发送功能
- 如何检测用户第一次访问我的网站并显示友好信息?
- 中文附件无法下载的问题分析
- java split用法详解及实例代码
- java多线程Future和Callable类示例分享
- PHP 中常量的知识整理
- percona-toolkit对MySQL的复制和监控类操作教程
- 实例讲解JSP Model2体系结构(下)
- js取得url地址参数实例
- SQL Server 2008安装图解(详细)
- 基于session_unset与session_destroy的区别详解
- jQuery 学习6 操纵元素显示效果的函数
- javascript操纵OGNL标签示例代码
- 优化RequireJS项目的相关技巧总结
- “网络钓鱼”主要手法及防范
- java数据库连接池和数据库连接示例
- iOS 10新的通知机制中添加图片的方法详解
- 用PHP制作静态网站的模板框架(四)
- 排除路由故障