JS中map与forEach的区别
很多同学可能对于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的区别的更多相关文章
- JS中map和foreach的区别以及some和every的用法
一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
- JS中Map和ForEach的区别
定义 forEach()方法: 针对每一个元素执行提供的函数. map()方法: 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来. 区别 forEach()方法不会返回执行 ...
- JS中map()与forEach()的区别和用法
相同点: 1.都是循环遍历数组中的每一项 2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组) 3.匿名函数中的this都是指向window 4 ...
- JavaScript中Map和ForEach的区别
译者按: 惯用Haskell的我更爱map. 原文: JavaScript — Map vs. ForEach - What’s the difference between Map and ForE ...
- ES5中, map 和 forEach的区别
forEach和map区别在哪里知道吗? // forEach Array.prototype.forEach(callback(item, index, thisArr), thisArg) // ...
- JS中map、forEach、filter、reduce等Array新增方法的区别
数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Array.isArray(elemen ...
- JS中for和forEach的区别
https://thejsguy.com/2016/07/30/javascript-for-loop-vs-array-foreach.html
- Js中Map对象的使用
Js中Map对象的使用 1.定义 键/值对的集合. 2.语法 mapObj = new Map() 3.备注 集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 4.属性 ...
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
浅谈JS中的!=.== .!==.===的用法和区别 var num = 1; var str = '1'; var test = 1; test == num //tr ...
随机推荐
- 微信小程序订阅消息,我踩过的坑都在这里了!
旧的模板消息将在 2020 年 1 月 10 号全面下架,也就是今天,不过貌似现在还可以用!!!我已经改好了,只不过还没有上线,准备坚持到最后一天! 0.订阅消息 简单介绍一下订阅消息的特点: 用户授 ...
- 有关字符串的算法(KMP,Manacher,BM)陆续补充
KMP算法: 引言: KMP算法是一种改进的字符串匹配算法 字符串匹配:即寻找str_target在str_source中出现的位置 没有改进的字符串匹配:用暴力法进行搜索,枚举出所有的情况然后一一比 ...
- ArcGIS Server 动态图层发布调用图解
目录 1 前言 1.1 简介 1.2 适用场景 2 动态图层 2.1 共享地图服务 2.2 动态工作空间添加 2.2.1 企业级数据库 2.2.2 shapefile文件夹 2.2.3 栅格文件夹 2 ...
- Arrays.sort() VS Arrays.parallelSort()
英文原文地址:Arrays.sort vs Arrays.parallelSort 作者:baeldung 翻译:高行行 1. 概述 我们都使用过 Arrays.sort() 对对象或原始数据类型数组 ...
- JS中使用FormData上传图片
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- Django3.0.2学习踩坑记
配置文件settings.py相关: 新增app INSTALLED_APPS = [ 'polls.apps.PollsConfig', # 这个是新增的APP 'django.contrib.ad ...
- Openstack之七:实现基于桥接的内外网络
一.在控制端进行配置网络 #启动实例文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/launch-instance.html# ...
- Broken Necklace 坏掉的项链 USACO 模拟(易错)
1004: 1.1.4Broken Necklace 坏掉的项链 时间限制: 1 Sec 内存限制: 128 MB提交: 11 解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目 ...
- 自定义博客cnblogs样式的必备前端小知识——css
css样式相关小知识 文字超出一行显示省略号 overflow: hidden; /*自动隐藏文字*/ text-overflow: ellipsis; /*文字隐藏后添加省略号*/ white-sp ...
- DataFrame分组和聚合
一.分组 1.语法 grouped= df.groupby(by='columns name') # grouped是一个DataFrameGroupBy对象,是可迭代的(遍历) # grouped中 ...