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 ...
随机推荐
- hadoop上下文信息获取方法
import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import ...
- Java 成员变量与局部变量
成员变量与局部变量的区别 什么是局部变量.什么是成员变量: 局部变量:在方法内部的变量 形参:在方法签名中定义的变量. 方法局部变量:在方法内部定义的变量. 代码块局部变量:在代码块内定义的变量. 成 ...
- python暴力破解压缩包密码
啥也不说,直接上代码 #-*-coding:utf-8-*- import zipfile #生成1-999999的数字密码表, 要是有别的密码类型,对密码表改造一下就可以了,也可以上网下载某些类型的 ...
- js复制变量值
来源:JavaScript高级程序设计(第3版)69页. 例如 : var a=1; var b = a ; 这里就是把a的值复制给变量 b 了. 但是 复制的变量值 分为 ...
- Ubuntu18.04 一次性升级Python所有库
pip是什么 pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 升级pip版本 默认Ubuntu自带的pip (pip 9.0.1)是基于Pytho ...
- 用PHP写下HELLO WORLD!
一.选择PHP开发工具 1.phpstorm最新版本 2.打开phpstorm界面 按create键,选择new window ,出下如下页面: 鼠标放在文件夹上,右键单击,弹出以下对话框:做如下操作 ...
- python专题文件操作
一 前言 本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作API,基础真的很重要,不管学什么知识,故看知识追寻者的专题系列真的很不错. 二 ...
- Frameworks.Entity.Core 4
Project.Core\Frameworks.Entity.Core\Commons\ 1 AutoMapperExtension.cs AutoMapper扩展方法 2枚举类型扩展方法EnumEx ...
- vijos 小胖守皇宫
点击打开题目 树形DP 显然会想到某个点放或不放守卫来定义状态,但在不放的情况下,需要分类讨论是父亲放还是一个儿子放,于是定义以下状态: f[root][0]表示自己不放,父亲也不放 f[root][ ...
- KALI美化-设置CONKY开机启动
简介 Conky 是一个应用于桌面环境的系统监视软件,可以在桌面上监控系统运行状态.网络状态等一系列参数 https://github.com/brndnmtthws/conky/ 详细配置文档:ht ...