问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JS的forEach和map方法的区别,还有一个$each

发布网友 发布时间:2022-04-22 22:49

我来回答

4个回答

懂视网 时间:2022-04-26 16:51

foreach和map的区别是:

   

      1、map()会分配内存空间存储新数组并返回,forEach()不会返回数据。


      2、forEach()允许callback更改原始数组的元素。map()返回新的数组。


  

热心网友 时间:2022-04-26 13:59

forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的。jQuery也有一个方法$.each(),长得和forEach()有点像,功能也类似。但是从本质上还是有很大的区别的,那么我们探探究竟。
一、forEach和map语法
语法:
//forEach
array.forEach(callback(currentValue, index, array){
//do something
}, this)
//或者
array.forEach(callback(currentValue, index, array){
//do something
})  
//map:
var new_array = arr.map(callback[, thisArg]) 
//$.each()
$(selector).each(function(index,element)) //注意参数的顺序
callback: 为数组中每个元素执行的函数,该函数接收三个参数,
参数一:当前数组中元素;参数二:索引; 参数三:当前数组。
this:可选,执行会掉时候,this的指向。
二、区别
2.1、forEach()返回值是undefined,不可以链式调用。
2.2、map()返回一个新数组,原数组不会改变。
2.3、没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();
2.4、$.each()方法规定为每个匹配元素规定运行的函数,可以返回 false 可用于及早停止循环。
三、经典例子
3.1 在使用forEach()时候,如果数组在迭代的视乎被修改,
则其他元素会被跳过。因为 forEach()不会在迭代之前创建数组的副本。
3.2反转字符串
var str = '12345';
Array.prototype.map.call(str, function(x) { //同时利用了call()方法
return x;
}).reverse().join('');
3.3一个笔试题。
1
["1", "2", "3"].map(parseInt); //结果 [1, NaN, NaN]   
如果想得到[1, 2,3]应该这么做
function returnInt(element){
return parseInt(element,10);
}
["1", "2", "3"].map(returnInt);  
这主要是因为 parseInt()默认有两个参数,第二个参数是进制数。当parsrInt没有传入参数的时候,而map()中的回调函数时候,会给它传三个参数,第二个参数就是索引,明显不正确,所以返回NaN了。
3.4....
四、兼容性
forEach()和map()是ECMA5新引入的,可能在标准的其他实现中不存在,在使用前可以要Ployfill一下。
具体网上很多吧,更多的是在ie9以下,如果你的项目无视这些,那么你可以不care。

热心网友 时间:2022-04-26 15:17

forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的。jQuery也有一个方法$.each(),长得和forEach()有点像,功能也类似。但是从本质上还是有很大的区别的,那么我们探探究竟。

一、forEach和map语法

语法:

//forEach
array.forEach(callback(currentValue, index, array){
    //do something
}, this)
 
//或者
array.forEach(callback(currentValue, index, array){
    //do something
})  
 
//map:
var new_array = arr.map(callback[, thisArg]) 
 
//$.each()
$(selector).each(function(index,element))  //注意参数的顺序

callback: 为数组中每个元素执行的函数,该函数接收三个参数,

参数一:当前数组中元素;参数二:索引; 参数三:当前数组。

this:可选,执行会掉时候,this的指向。

二、区别

2.1、forEach()返回值是undefined,不可以链式调用。

2.2、map()返回一个新数组,原数组不会改变。

2.3、没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();

2.4、$.each()方法规定为每个匹配元素规定运行的函数,可以返回 false 可用于及早停止循环。

热心网友 时间:2022-04-26 16:52

参考如下:假设有一个数组,每个元素是一个人。面前站了一排人。foreach就是按顺序一个一个跟他们做点什么,具体做什么,随便:people.forEach(function(de){de.pickUpSoap();});map就是手里拿一个盒子(一个新的数组),一个一个叫他们把钱包扔进去。结束的时候获得了一个新的数组,里面是大家的钱包,钱包的顺序和人的顺序一一对应。varwallets=people.map(function(de){returnde.wallet;});rece就是拿着钱包,一个一个数过去看里面有多少钱啊?每检查一个,就和前面的总和加一起来。这样结束的时候就知道大家总共有多少钱了。vartotalMoney=wallets.rece(function(countedMoney,wallet){returncountedMoney+wallet.money;},0);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 js的forEach中的return只会跳过单次循环吗? 工商管理主要学什么 工商管理学习哪些内容?就业或读研的方向? 公务员工商管理类包括哪些专业? 工商管理学什么? 工商管理类专业包括哪些专业方向 工商管理有哪些专业类别 工商管理类包括什么 工商管理主要学什么课程? 大学工商管理类包括哪些专业 工商管理类有什么专业 工商管理和工商管理类的区别? 工商管理专业包括哪些专业? 法拍房在那个平台进行拍卖呢? 工商管理类专业是学什么的 工商管理类怎么分专业 阿里拍卖靠不靠谱,谁在上边拍过商品,给点建议? 工商管理类是什么 阿里拍卖的房子靠谱吗? 工商管理类包括哪些专业 jsp中的jstl中的foreach怎么退出循环 js的foreach遍历怎么用 nodejs的forEach不支持break吗 js的for in循环 如何取到forEach中input标签的值,我想用js获取,但出现了死循环 假如有3个foreach循环,当最里面的循环符合条件时,怎么从最里面的那个循环跳出到最外面的那个循环? foreach跳出循环判断的问题 js的for in循环和java里的foreach循环的区别 安全工程师资格证有效期是几年? 注册安全工程师注册有效期到底是3年还是五年?<注册安全工程师职业资格... 注册安全工程师证件有效期是多少? 注册安全工程师需几年一审? 全国注册安全工程师执业年限是多久? 注册安全工程师考过了,证取到了,但是一直没注册,证件会不会过期?_百度... 注册安全工程师有效期是几年?在哪儿可以学? 请问在湖北考教师资格证有些什么要求及基本流程是怎样的? 湖北省教师资格证怎么考取? 湖北考教师资格证需要什么条件? 湖北教师资格证难考吗 我在湖北读大三,非师范类专业,准备考教师资格证,可以在湖北报名吗?那考...