原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作


Posted in jQuery onFebruary 27, 2019

本文实例讲述了原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作。分享给大家供大家参考,具体如下:

一、原生JS forEach()和map()遍历

共同点:

①.都是循环遍历数组中的每一项。

②.forEach()map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input。

③.匿名函数中的this都是指Window。

④.只能遍历数组。

1.forEach()

没有返回值。

var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
    input[index] = item*10;
})
console.log(res);//-->undefined;
console.log(ary);//-->会对原来的数组产生改变

2.map()

有返回值,可以return 出来。

var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
  return item*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1]

兼容写法:

不管是forEach还是map在IE6-8下都不兼容(不兼容的情况下在Array.prototype上没有这两个方法),那么需要我们自己封装一个都兼容的方法,代码如下:

/**
* forEach遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
Array.prototype.myForEach = function myForEach(callback,context){
  context = context || window;
  if('forEach' in Array.prototye) {
    this.forEach(callback,context);
    return;
  }
  //IE6-8下自己编写回调函数执行的逻辑
  for(var i = 0,len = this.length; i < len;i++) {
    callback && callback.call(context,this[i],i,this);
  }
}
/**
* map遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
Array.prototype.myMap = function myMap(callback,context){
  context = context || window;
  if('map' in Array.prototye) {
    return this.map(callback,context);
  }
  //IE6-8下自己编写回调函数执行的逻辑
  var newAry = [];
  for(var i = 0,len = this.length; i < len;i++) {
    if(typeof callback === 'function') {
      var val = callback.call(context,this[i],i,this);
      newAry[newAry.length] = val;
    }
  }
  return newAry;
}

二、jQuery $.each()和$.map()遍历

共同点:

即可遍历数组,又可遍历对象。

1.$.each()

没有返回值。$.each()里面的匿名函数支持2个参数:当前项的索引i,数组中的当前项n。如果遍历的是对象,k 是键,n 是值。

$.each( ["a","b","c"], function(i, n){
   alert( i + ": " + n );
});
$("span").each(function(i, n){
   alert( i + ": " + n );
});
$.each( { name: "John", lang: "JS" }, function(k, n){
   alert( "Name: " + k + ", Value: " + n );
});

2.$.map()

有返回值,可以return 出来。$.map()里面的匿名函数支持2个参数和$.each()里的参数位置相反:数组中的当前项n,当前项的索引i。如果遍历的是对象,i 是值,n 是键。如果是$("span").map()形式,参数顺序和$.each()  $("span").each()一样。

var arr=$.map( [0,1,2], function(n){
   return n + 4;
});
console.log(arr);
$.map({"name":"Jim","age":17},function(i,n){
   console.log(i+":"+n);
});

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

jQuery 相关文章推荐
解决jQuery ajax动态新增节点无法触发点击事件的问题
May 24 jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
基于jQuery.i18n实现web前端的国际化
May 04 jQuery
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 jQuery
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
jQuery位置选择器用法实例分析
Jun 28 jQuery
jQuery--遍历操作实例小结【后代、同胞及过滤】
May 22 jQuery
jQuery实现动态加载瀑布流
Sep 01 jQuery
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 #jQuery
jQuery表单元素过滤选择器用法实例分析
Feb 20 #jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 #jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 #jQuery
jQuery选择器之层次选择器用法实例分析
Feb 19 #jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 #jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 #jQuery
You might like
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
理解Python中函数的参数
2015/04/27 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
详解python播放音频的三种方法
2019/09/23 Python
python实现简单图书管理系统
2019/11/22 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Python实现结构体代码实例
2020/02/10 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
中专生的个人自我评价
2013/12/11 职场文书
部队学习十八大感言
2014/01/11 职场文书
校园公益广告语
2014/03/13 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
医院护士工作检讨书
2014/10/26 职场文书
党员自我评价范文2015
2015/03/03 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
五年级作文之成长
2019/09/16 职场文书