很多同学可能对于map与forEach的区别不是太了解,今天我们介绍一下JS中的map与forEach方法,

我对map的理解是,这个方法对一个数组arr1中的每一个元素进行遍历(传递给一个数组,参数为(item,index,arr1)),返回值保存到另一个数组中,遍历结束后,整个方法返回这个数组

map与forEach其实都是JS中,对array进行遍历的方法,区别在于map是存在返回值的,而forEach返回值为undefined

接下来我们来看map代码实例

 let L1 = [1, 4, 7, 11]
let res1 = L1.map((item, index, arr) => {
console.log(item); //该参数为遍历的元素本身
console.log(index); //该参数为遍历的元素的下标
console.log(arr); //该参数为原数组本身
return item + 2 //返回值会作为储存到另一个数组当作总体的返回值
})
console.log(res1);
console.log(L1);

输出为下图。可以看到,map方法确实有返回值,用res1接收后输出为修改过的数组。

map接收的函数有三个参数,可以只写一个两个,也可以三个都写,但是要注意先后顺序。

然后我们来看forEach代码实例

 let L1 = [1, 4, 7, 11]
let res1 = L1.forEach((item, index, arr) => {
console.log(item);
console.log(index);
console.log(arr);
return item + 2
})
console.log(res1);
console.log(L1);

输出为下图。可以看到,forEach方法无返回值,用res1接收后输出undefined,但是细心的同学可能发现了,为什么对item进行了return,但是L1数组依旧没有变化呢?那是因为对于forEach也是不能修改原数组的,如果需要修改原数组,可以使用索引进行修改

 let L1 = [1, 4, 7, 11]
let res1 = L1.forEach((item, index, arr) => {
console.log(item);
console.log(index);
console.log(arr);
arr[index] += 1
})
console.log(res1);
console.log(L1);

输出为:

但是forEach作为ES5提出的方法,性能异常的差

所以大家如果是想对数组进行遍历输出之类简单的操作,可以使用forEach,但是想批量修改数组值,推荐使用map方法

JS中map与forEach的区别的更多相关文章

  1. JS中map和foreach的区别以及some和every的用法

    一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...

  2. JS中Map和ForEach的区别

    定义 forEach()方法: 针对每一个元素执行提供的函数. map()方法: 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来. 区别 forEach()方法不会返回执行 ...

  3. JS中map()与forEach()的区别和用法

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

  4. JavaScript中Map和ForEach的区别

    译者按: 惯用Haskell的我更爱map. 原文: JavaScript — Map vs. ForEach - What’s the difference between Map and ForE ...

  5. ES5中, map 和 forEach的区别

    forEach和map区别在哪里知道吗? // forEach Array.prototype.forEach(callback(item, index, thisArr), thisArg) // ...

  6. JS中map、forEach、filter、reduce等Array新增方法的区别

    数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Array.isArray(elemen ...

  7. JS中for和forEach的区别

    https://thejsguy.com/2016/07/30/javascript-for-loop-vs-array-foreach.html

  8. Js中Map对象的使用

    Js中Map对象的使用 1.定义 键/值对的集合. 2.语法 mapObj = new Map() 3.备注 集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 4.属性 ...

  9. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

随机推荐

  1. 如何在Go项目中输出版本信息?

    我们经常在使用CLI工具的时候,都会有这样的参数输出: ``` ➜ ~ docker version Client: Docker Engine - Community Version: 18.09. ...

  2. 2019牛客暑期多校第二场题解FH

    F.Partition problem 传送门 题意:有2n个人,分两组,每组n个,要求sum(vij)最大值. 题解:n并不大我们可以枚举每个人是在1组还是2组爆搜. 代码: #include &l ...

  3. VS从标准输入读入文件

    1.点击[生成],在对应目标平台[64 or 32]文件夹下的[release]或[debug]下找到可执行文件 2.读取销售记录文件 1)打开cmd,将销售记录文件和可执行文件放在同一文件夹下 2) ...

  4. C# 阿里云查询、删除文件

    class Program { static string regionId = "cn-shanghai"; static string accessKeyId = " ...

  5. Python - 线性回归(Linear Regression) 的 Python 实现

    背景 学习 Linear Regression in Python – Real Python,前面几篇文章分别讲了"regression怎么理解","线性回归怎么理解& ...

  6. 源码分析Kafka 消息拉取流程

    目录 1.KafkaConsumer poll 详解 2.Fetcher 类详解 本节重点讨论 Kafka 的消息拉起流程. @(本节目录) 1.KafkaConsumer poll 详解 消息拉起主 ...

  7. 趣谈编程史第2期-这个世界缺少对C语言的敬畏,你不了解的C语言科普

    这是我制作的编程语言科普系列视频的第二期,博客根据视频文案整理而成,提供给有需要的朋友阅读或使用. 视频地址:https://www.bilibili.com/video/av83627932/    ...

  8. Spring Boot 入门(十一):集成 WebSocket, 实时显示系统日志

    以前面的博客为基础,最近一篇为Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存.本篇博客主要介绍了Spring Boot集成 Web Socket进行日志的推送, ...

  9. mysql索引创建和使用细节(二)

    上篇粗略记录当mysql字段类型是string,传入int类型参数后失效当问题. 现在测试下mysql字段是int类型,传参string类型会发生什么. 题外话,最近膝盖手术后还在家养伤中,只怪自己以 ...

  10. P1559 运动员最佳匹配问题 by hyl 天梦

    #include<iostream> using namespace std; int n; int maxx[21][21]; int lie[21]; int aa[21]; int ...