原生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编写textarea输入字数限制代码
Mar 23 jQuery
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
jquery中有哪些api jQuery主要API
Nov 20 jQuery
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
jQuery实现表格隔行换色
Sep 01 jQuery
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
jQuery treeview树形结构应用
Mar 24 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
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python基础教程项目二之画幅好画
2018/04/02 Python
python实现tail -f 功能
2020/01/17 Python
python 6种方法实现单例模式
2020/12/15 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
网站编辑求职信
2013/10/17 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
自我检讨报告
2015/01/28 职场文书
执行力心得体会范文
2016/01/11 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python