forEach和map有什么区别,使用场景?

forEach和map有什么区别,使用场景?

    • 区别
    • 什么意思?forEach: 不直接改变原始数组,但可以在回调中更改原始数组。

区别

forEachmap 都是数组的常用方法,但它们有不同的目的和用法。下面是它们之间的主要区别以及各自的使用场景:

  1. 目的:

    • forEach: 主要用于迭代数组并执行某些操作,但不返回一个新数组。
    • map: 迭代数组,并对每个元素执行某些操作,然后返回一个新数组,该数组包含与原始数组相同数量的元素(可能已被修改)。
  2. 返回值:

    • forEach: 无返回值(返回undefined)。
    • map: 返回一个新数组。
  3. 是否改变原始数组:

    • forEach: 不直接改变原始数组,但可以在回调中更改原始数组。
    • map: 不改变原始数组,但新数组的元素可能已被修改。
  4. 使用场景:

    • forEach: 当你只是想对数组的每个元素执行操作,而不关心结果时,如打印每个元素。
    • map: 当你想基于现有数组创建一个新数组时,如将每个数字元素乘以2。
  5. 示例:

    const arr = [1, 2, 3, 4, 5];// 使用 forEach 打印每个元素
    arr.forEach(item => {console.log(item);
    });// 使用 map 创建一个新数组,其中每个数字都乘以2
    const doubled = arr.map(item => item * 2);
    console.log(doubled); // [2, 4, 6, 8, 10]
    

总结:

  • 当你想对数组的每个元素执行某些操作,并且不需要返回任何值时,使用forEach

  • 当你需要基于现有数组的每个元素创建一个新数组时,使用map

当选择使用哪个方法时,考虑你的需求。如果你只是想执行操作并不关心结果,则使用forEach。如果你想根据当前数组生成一个新数组,则使用map

什么意思?forEach: 不直接改变原始数组,但可以在回调中更改原始数组。

当你使用 forEach 遍历数组时,它不会自动更改数组的内容。但是,在 forEach 的回调函数中,你可以手动修改原始数组。

让我们通过代码来解释:

  1. forEach 不会自动更改数组:

    const arr = [1, 2, 3];
    arr.forEach(item => item * 2);console.log(arr);  // 输出:[1, 2, 3]
    

    尽管我们尝试将每个项乘以2,但原始数组 arr 并没有更改。

  2. forEach 的回调中手动修改原始数组:

    const arr = [1, 2, 3];
    arr.forEach((item, index) => {arr[index] = item * 2;
    });console.log(arr);  // 输出:[2, 4, 6]
    

    在这个例子中,我们明确地使用了数组的索引来修改原始数组 arr。因此,数组的内容已经更改。

这就是所说的"forEach 不直接改变原始数组,但可以在回调中更改原始数组"的意思。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RE:从零开始的车载Android HMI(四) - 收音机刻度尺

最近比较忙,研究复杂的东西需要大量集中的时间,但是又抽不出来,就写点简单的东西吧。车载应用开发中有一个几乎避不开的自定义View,就是收音机的刻度条。本篇文章我们来研究如何绘制一个收音机的刻度尺。 本系列文章的目的是在讲…

视觉SLAM14讲笔记-第3讲-三维空间刚体运动

空间向量之间的运算包括: 数乘、加法、减法、内积、外积。 内积:可以描述向量间的投影关系,结果是一个标量。 a ⃗ ⋅ b ⃗ ∑ i 1 3 a i b i ∤ a ∤ ∤ b ∤ c o s ⟨ a , b ⟩ \vec{a} \cdot \vec{b}\sum_{i1}^3{{a _i}{b_i}} \nmid a…

Leetcode-每日一题【剑指 Offer 36. 二叉搜索树与双向链表】

题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表…

vim常用命令汇总

vim常用命令 1.光标移动删除撤销/恢复查找替换 vim可以作为vscode插件使用 1.光标移动 快捷键功能描述 删除 快捷键功能描述dd删除光标所在行,删除之后,下一行上移ndd删除当前行(包括此行)后 n 行文本dw移动光标到单词的开头以…

【Vue2】---->mixins 复用

#记录 mixins 复用 - 处理登录确认框的弹出 1 新建一个 mixin 文件 mixins/loginConfirm.js export default {methods: {// 是否需要弹登录确认框// (1) 需要,返回 true,并直接弹出登录确认框// (2) 不需要,返回 falseloginConfirm () {if…

python编写四画面同时播放swap视频

当代技术让我们能够创建各种有趣和实用的应用程序。在本篇博客中,我们将探索一个基于wxPython和OpenCV的四路视频播放器应用程序。这个应用程序可以同时播放四个视频文件,并将它们显示在一个GUI界面中。 C:\pythoncode\new\smetimeplaymp4.py 准备工作…

rabbitmq卸载重新安装3.8版本

卸载之前的版本的rabbitmq 卸载rabbitmq 卸载前先停止rabbitmq服务 /usr/lib/rabbitmq/bin/rabbitmqctl stop查看rabbitmq安装的相关列表 yum list | grep rabbitmq卸载rabbitmq相关内容 yum -y remove rabbitmq-server.noarch 卸载erlang 查看erlang安装的相关列表 …

Android启动优化

Android启动优化 启动分类 冷启动热启动 启动监控 生命周期监控首屏渲染监控用户可交互监控 启动报表 50分位,90分位图分段图,1s到2s,2s到3s不同Android版本,不同设备,不同app版本启动时间 启动优化 懒加载线程…

STM32 F103C8T6学习笔记13:IIC通信—AHT10温湿度传感器模块

今日学习一下这款AHT10 温湿度传感器模块,给我的OLED手环添加上测温湿度的功能。 文章提供源码、测试工程下载、测试效果图。 目录 AHT10温湿度传感器: 特性: 连接方式: 适用场所范围: 程序设计: 设…

js 类、原型及class

js 一直允许定义类。ES6新增了相关语法(包括class关键字)让创建类更容易。新语法创建的类和老式的类原理相同。js 的类和基于原型的继承机制与Java等语言中的类和继承机制有着本质区别。 1 类和原型 类意味着一组对象从同一个原型对象继承属性。因此,原型对象是…

跨专业申请成功|金融公司经理赴美国密苏里大学访学交流

J经理所学专业与从事工作不符,尽管如此,我们还是为其成功申请到美国密苏里大学经济学专业的访问学者职位,全家顺利过签出国。 J经理背景: 申请类型: 自费访问学者 工作背景: 某金融公司经理 教育背景&am…

(视频教程)单细胞转录组多组差异基因分析及可视化函数

很久以前,我们发布过一个单细胞多组差异基因可视化的方法。跟着Cell学单细胞转录组分析(八):单细胞转录组差异基因分析及多组结果可视化。主要复现参考的是这篇发表在《Cell》上的文章。可以将多个组的差异结果展示出来。 (reference:A Spati…

XPath:学习使用XPath语法提取HTML/XML文档中的数据使用语法

以下是一些XPath语法示例,用于提取HTML/XML文档中的数据: 选择元素: 选择所有p元素: //p 选择根元素: / 属性匹配: 选择class属性为"example"的div元素: //div[classexample] 文本内容…

在VScode中执行npm、yarn命令报错解

在VScode中执行npm、yarn命令报错解 我使用的是vnm安装好npm,在WindowsR 界面是可以运行查看出版本的;但是在VScode中报错。 查了很多资料,我这种情况的原因是在VScode中默认使用的终端是Powershell,然后我切换到系统的cmd则可以…

原生微信小程序使用 wxs;微信小程序使用 vant-weapp组件

1.原生微信小程序使用 wxs 1.内嵌 WXS 脚本 2. 定义外链 wxs 3. 使用外连wxs 在这里插入图片描述 2. 微信小程序使用 vant weapp 1.安装步骤 2. 安装包管理(package.json)文件的方法 操作顺序 :文档地址 如果使用 typescript 需要操作步骤3,否则不…

python语言学习

序言 此系列用于总结python语言的相关知识点,用于帮助自己和有缘人查阅 1、python基本数据类型 python基本数据类型 – 字符串

使用 wxPython 和 pymupdf进行 PDF 加密

PDF 文件是一种常见的文档格式,但有时候我们希望对敏感信息进行保护,以防止未经授权的访问。在本文中,我们将使用 Python 和 wxPython 库创建一个简单的图形用户界面(GUI)应用程序,用于对 PDF 文件进行加密…

自动化运维:Ansible基础与命令行模块操作

目录 一、理论 1. Ansible 2.部署Ansible自动化运维工具 3.Ansible常用模块 4.hostsinverntory主机清单 二、实验 1.部署Ansible自动化运维工具 2.ansible 命令行模块 3.hostsinverntory主机清单 三、问题 1. ansible远程shell失败 2.组变量查看webservers内主机ip报…

基于Java+SpringBoot+Vue前后端分离美食推荐商城设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

显著性检验(Significance Test)

参考链接&#xff1a;Click Here 显著性检验&#xff08;Significance Test&#xff09;主要分为两个类别&#xff1a; Statistical Significance Test (统计显著性检验) 计量方式&#xff1a;p-value < 0.05 目的&#xff1a;检验原始分布与目标分布之间是否具有显著差异性…