大多数情况下,我们都要对数组进行遍历,然后经常用到的两个方法就是forEach和map方法。
先来说说它们的共同点

相同点

  • 都是循环遍历数组中的每一项
  • forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项),index(索引值),arr(原数组)
  • 匿名函数中的this都是指向window
  • 只能遍历数组
  • 都不会改变原数组

区别

map方法
1.map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。
2.map方法不会对空数组进行检测,map方法不会改变原始数组。
3.浏览器支持:chrome、Safari1.5+、opera都支持,IE9+,

array.map(function(item,index,arr){},thisValue)var arr = [0,2,4,6,8];
var str = arr.map(function(item,index,arr){console.log(this); //windowconsole.log("原数组arr:",arr); //注意这里执行5次return item/2;
},this);
console.log(str);//[0,1,2,3,4]

若arr为空数组,则map方法返回的也是一个空数组。
forEach方法
1.forEach方法用来调用数组的每个元素,将元素传给回调函数
2.forEach对于空数组是不会调用回调函数的。

Array.forEach(function(item,index,arr){},this)
var arr = [0,2,4,6,8];
var sum = 0;
var str = arr.forEach(function(item,index,arr){sum += item;console.log("sum的值为:",sum); //0 2 6 12 20console.log(this); //window
},this)
console.log(sum);//20
console.log(str); //undefined

无论arr是不是空数组,forEach返回的都是undefined。这个方法只是将数组中的每一项作为callback的参数执行一次。

转载于:https://www.cnblogs.com/liubingyjui/p/10821803.html

数组中的forEach和map的区别相关推荐

  1. JS数组中 forEach() 和 map() 的区别

    JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...

  2. vue forEach和map的区别

    记录工作中遇到的问题,选择右边数组一项进行删除,forEach和map的区别就出来了 1.刚开始是foreach写的,效果没出来 this.rightTree:表示右边的数组this.oriFathe ...

  3. [JS] for-each和map()的区别

    先说下for-each与for-of还有for-in的区别. for-of和for-in都是对对象操作的,而for-each和map()是对数组进行操作的. for-in的使用:对于一个数组里的每一个 ...

  4. foreach和map的区别

    1.相同点 1) 都是循环遍历数组中的每一项. 2) 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组). 3) 匿名函数中的this都是指向wi ...

  5. forEach 与 map 的区别

    forEach(item, index,arr): 用于调用数组的每个元素,并将元素传递给回调函数 形象介绍: 假设一个数组,每个元素是一个人,你面前站了一排人 forEach 就是你按顺序一个一个跟 ...

  6. C++中的hash_map和map的区别

    1)为什么需要hash_map /* 例如: 我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵 ...

  7. php中的foreach和js中的foreach的用法和区别

    PHP中的foreach循环: 主要用于遍历数组 例如: (1)// $colors=array("red","yellow","blue" ...

  8. javascript学习系列(3):数组中的foreach方法

    最好的种树是十年前,其次是现在.歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主  放弃很容易但是坚持一定很酷     我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的 ...

  9. 数组中a与a[0]的区别

    在探讨这个问题之前,我们首先来看一道笔试题,如下: [摘自牛客网]下列代码的结果是:(正确答案是 C) main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)( ...

最新文章

  1. PC 机 UART(NS8250)详解
  2. Three.js之渲染器
  3. 漫步最优化二十五——斐波那契搜索
  4. android 调用 asp.net web api,从 .NET 客户端调用 Web API (C#)
  5. 实验5 数组、指针与字符串
  6. java中Map,List与Set的区别
  7. python继承封装多态简单理解_Python面向对象编程:封装、继承、多态(基础篇十)...
  8. scrapy1.5文档(第二节 Scrapy Tutorial)
  9. vivado添加设计源文件
  10. linux下lamealsa进行音频流操作(一)lame知识介绍
  11. JAVA 计算小数位数
  12. Django-应用与分布式路由
  13. java热词_生成热词
  14. 事情永远都没有想象中那么好
  15. IDEA配置Git教程
  16. HAUT OJ 1231: ykc买零食
  17. UR5机器人学习之TCP/IP通讯
  18. webpack打包策略、treeShaking
  19. StrongSwan安装部署、配置使用方法总结
  20. 浏览器批量打开网站在线工具

热门文章

  1. 白--留白与游戏设计
  2. [讨论帖] 程序员如何赚外快?
  3. .NET:如何让线程支持超时?
  4. web服务器的简单实现——HTTP权威指南读书心得(七)
  5. [翻译]SQL Server 工作集消息
  6. BZOJ 2957 楼房重建 (分块)
  7. JDBC连接数据库(一)
  8. 基于linux 的2048
  9. 音视频播放、录音、拍照
  10. 手机屏幕适配原理及实现