JS forEach和map方法的用法与区别分析
本文实例讲述了JS forEach和map方法的用法与区别。分享给大家供大家参考,具体如下
一、前言
forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,它们之间还是有区别的。jQuery也有一个方法$.each()
,长得和forEach()
有点像,功能也类似。从本质上还是有很大的区别的,那么我们探探究竟。
二、forEach和map语法
2.1、语法
//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.2、区别
2.2.1、forEach()
返回值是undefined,不可以链式调用。
2.2.2、map()
返回一个新数组,原数组不会改变。
2.2.3、没有办法终止或者跳出forEach()
循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()
或者Array.some()
;
2.2.4、$.each()
方法规定为每个匹配元素规定运行的函数,可以返回 false 可用于及早停止循环。
三、一些栗子
3.1 迭代时的修改
在使用forEach()
时候,如果数组在迭代的时候被修改,则其他元素会被跳过。因为 forEach()
不会在迭代之前创建数组的副本。
var words = ['one', 'two', 'three', 'four']; words.forEach(function(word) { console.log(word); if (word === 'two') { words.shift(); } }); // one // two // four
3.2反转字符串
var str = '12345'; Array.prototype.map.call(str, function(x) { //利用了call()方法 return x; }).reverse().join('');
3.3一个笔试题。
["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了。
四、兼容性
forEach()
和map()
是ECMA5新引入的,可能在标准的其他实现中不存在,在使用前可以要Ployfill一下。
具体网上很多吧,更多的是在ie9以下,如果你的项目无视这些,那么你可以不care。
参考
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具测试上述代码运行效果。
PS这里再为大家推荐一款JS数组遍历方式分析对比工具供大家参考
在线JS常见遍历方式性能分析比较工具
更多关于JavaScript相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程