原生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自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
JQuery 获取多个select标签option的text内容(实例)
Sep 07 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
jquery实现有过渡效果的tab切换
Jul 17 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php简单提示框alert封装函数
2010/08/08 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
护理专业本科生自荐信
2013/10/01 职场文书
交通工程专业推荐信
2014/09/06 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
死者家属慰问信
2015/03/24 职场文书
2015年新教师工作总结
2015/04/28 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
情感电台广播稿
2015/08/18 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫