数组中foEach和map的用法详解

相同点:

1.都是循环遍历数组(仅仅是数组)中的每一项。

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

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

4.IE6-8不兼容,通过在数组原型上扩展此方法可以实现

形式:

[].forEach(function(value,inede,array) {
//...
});
[].map(function(value,inede,array) {
//...
}); 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);
}
}

forEach():

参数:value数组中的当前项, index当前项的索引, array原始数组;

数组中有几项,那么传递进去的匿名回调函数就需要执行几次。

无返回值,仅仅是遍历数组中的每一项,不对原来数组进行修改;但是可以自己通过数组的索引来修改原来的数组;

    var data = [1,23,45,56,7,8];
data.forEach(function(value,index,arr) {
arr[index] = arr[index]*10;
});

map():

有返回值,可以return出来。

参数:value数组中的当前项,index当前项的索引,array原始数组;

区别:map的回调函数中支持return返回值;相当于把数组中的每一项改变(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);

    var data = [10,230,450,560,70,80];
var data1 = data.map(function(value,index,arr) {
return value/10;
});
console.log(data);
console.log(data1);
//(6) [10, 230, 450, 560, 70, 80]
//(6) [1, 23, 45, 56, 7, 8]

jQuery中的$.each和$.map

相比于原生js功能有了扩展,可以遍历对象。

形式:

$.each(obj,function(index,value) {
//...
});
$.map(obj,function(index,value) {
//...
});

$.each()

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

$.each( { name: "assassin", age: 23 }, function(k, v){
console.log( "Key: " + k + ", Value: " + v );
});
/*
Key: name, Value: assassin
Key: age, Value: 23
*/

$.map()

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

    $.map( { name: "assassin", age: 23 }, function(k, v){
console.log( "Key: " + k + ", Value: " + v );
});
//Key: assassin, Value: name
//Key: 23, Value: age

js数组中foEach和map的用法详解 jq中的$.each和$.map的更多相关文章

  1. STL map 常见用法详解

    <算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...

  2. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  3. centos中crontab(计时器)用法详解

    关于crontab: crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行.该 ...

  4. [转]Java中Map的用法详解

    转载地址:http://www.zhixing123.cn/jsp/30113.html Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictio ...

  5. Java中Map的用法详解

    Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collecti ...

  6. STL:map/multimap用法详解

    map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...

  7. STL之六:map/multimap用法详解

    转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap 使用map/multimap之前要加入头文件# ...

  8. oracle中的exists 和 in 用法详解

    以前一直不知道exists和in的用法与效率,这次的项目中需要用到,所以自己研究了一下.下面是我举两个例子说明两者之间的效率问题. 前言概述: “exists”和“in”的效率问题,涉及到效率问题也就 ...

  9. Apache中的Order Allow,Deny用法详解

    本文讲述了Apache中的Order Allow,Deny用法.分享给大家供大家参考,具体如下: Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directo ...

随机推荐

  1. Session原理、安全以及最基本的Express和Redis实现

    Session原理.安全以及最基本的Express和Redis实现 https://segmentfault.com/a/1190000002630691

  2. List exercise

    The slice operator can take a third argument that determines the step size, so t[::2] creates a list ...

  3. Laravel-路由组和中间件

    Laravel-路由组和中间件 标签(空格分隔): php 定义路由组 Route::group(['prefix'=>'Anime'], function(){ Rout::match(['g ...

  4. Kali linux 2016.2(Rolling)里Metasploit的口令猜测与嗅探

    不多说,直接上干货! 对于发现的系统与文件管理类网络服务,比如Telnet.SSH.FTP等,可以进行弱口令的猜测,以及对明文传输口令的嗅探,从而尝试获取直接通过这些服务进入目标网络的通道. 对于SS ...

  5. T4701 【卜卜】树状数组模板

    题目背景 令 夜 色 的 钟 声 响 起 令 黄 昏 (起 始) 的 钟 声 响 起 我 爱 (渴 望) 的 就 只 有 你 我 爱 ( 渴 望 ) 你 正因如此 独自安静地哭泣吧 正因如此 无论你在 ...

  6. 点击鼠标右键弹出错误提示:CrashHandler initialization error

    电脑重装系统后,什么都没有了,重装部分必须用的软件后,不管是在桌面还是在文件夹中,当点击鼠标右键时,总是弹出错误,如下图所示: 上网找解决方法,也没有找到,但是看错误,是与SVN有关. 产生原因:To ...

  7. Surfaces

    For Developers‎ > ‎Design Documents‎ > ‎Chromium Graphics // Chrome GPU‎ > ‎ Surfaces Goals ...

  8. MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

    这几天因为工作需求,需要把MySQL请出来,所以将尘封已久的MySQL进行启动.可是事与愿违,兴许是许久没有访问MySQL了,MySQL生气的不理我,并向外抛出一阵阵报错.1.其中一个是:Window ...

  9. [POI2008]POD-Subdivision of Kingdom(搜索+状压)

    题意 给定一个n个点的无向图,要求将点集分成大小相等的两个子集,使两个子集之间的边数最少 (n<=26) 题解 一开始想了半天DP发现不会,去看题解全是搜索. 所以发现C(1326)可以过我就写 ...

  10. Linux 中挂载 ISO 文件

    在 Linux 中挂载 ISO 文件 用 mount 命令,在终端中输入如下命令即可: sudo mount -o loop filename.iso /cdrom 其中 filename.iso 是 ...