当前位置: 首页 > news >正文

数组操作forEach和map

forEach和map的相同点

1、都是循环遍历数组中的每一项
2、入参匿名函数都支持三个参数,当前项item,当前项索引index,原始数组arr;匿名函数中的this都指向window
3、都可以通过return跳过本次循环
4、都无法通过使用 break 语句来中断循环。 break 语句用于中断循环的功能只适用于 for 循环或 while 循环
5、可以用try catch包裹实现跳出循环

第3点代码实现

const array1 = [1, 2, 3, 4, 5];let sum1 = 0;array1.forEach((element) => {if (element === 3) {return; // 跳过本次循环}console.log(element); //1,2,4,5sum1 += element;});console.log(sum1); // 输出: 12
const array1 = [1, 2, 3, 4, 5];
let arr4 =array1.map((element) => {if (element === 3) {return //跳过本次循环}console.log(element); //1,2,4,5return element+1});console.log(arr4); // 输出: [2,3,undefined,5,6]

第5点代码实现

let arr2 = [0, 1, "stop", 3, 4];
try {arr2.forEach(element => {if (element === "stop") {throw new Error("forEachBreak");}console.log(element); // 输出 0 1 后面不输出});
} catch (e) {console.log(e.message); // forEachBreak
};
let arr2 = [0, 1, "stop", 3, 4];
try {arr2.map(element => {if (element === "stop") {throw new Error("forEachBreak");}console.log(element); // 输出 0 1 后面不输出});
} catch (e) {console.log(e.message); // forEachBreak
};

forEach和map的区别

1、map有返回值,会分配内存空间。返回一个和原数组长度一致的新数组,可以进行链式操作;forEach没有返回值,无法进行链式调用

是否改变原始数组

基础数据类型
forEach不会改变

const array = [1, 2, 3, 4];
array.forEach(item => {item = item + 1
})
console.log(array); // [1,2,3,4]

map不会改变

const array = [1, 2, 3, 4];
array.map(item => {item = item + 1
})
console.log(array); // [1,2,3,4]

引用数据类型
forEach会改变

        const arr = [{name: 'shaka',age: 23}, {name: 'virgo',age: 18}]arr.forEach(item => {if (item.name === 'shaka') {item.age = 100}})console.log(arr); //[{name: 'shaka', age: 100}, {name: 'virgo', age: 18}]

map会改变

        const arr = [{name: 'shaka',age: 23}, {name: 'virgo',age: 18}]arr.map(item => {if (item.name === 'shaka') {item.age = 100}})console.log(arr); //[{name: 'shaka', age: 100}, {name: 'virgo', age: 18}]

结论:如果操作数组项item改变,对于数组项目是基础数据类型的,forEach和map都不会改变原数组;对于数组项目是引用数据类型的,forEach和map都会改变原数组;
数组项目是基础数据类型的可以通过遍历+访问数组下标来改变原始数组

const array = [1, 2, 3, 4];
array.forEach((item,index) => {array[index] = item + 1
})
console.log(array); // [2,3,4,5]const array = [1, 2, 3, 4];
array.map((item,index) => {array[index] = item + 1
})
console.log(array); // [2,3,4,5]

参考:
链接: link

链接: link

相关文章:

数组操作forEach和map

forEach和map的相同点 1、都是循环遍历数组中的每一项 2、入参匿名函数都支持三个参数,当前项item,当前项索引index,原始数组arr;匿名函数中的this都指向window 3、都可以通过return跳过本次循环 4、都无法通过使用 break 语句来中…...

流式处理应用场景与流式计算处理框架选择建议

文章目录 前言使用场景如何选择流式处理框架 前言 在之前的文章中我们介绍了如何进行流式处理——从一般性的概念和模式说起,并列举了一些Streams的例子: 流式处理相关概念总结说明流式处理设计模式总结说明Kafka Streams 架构概览 接下来的文章将介绍…...

2024年软件测试岗必问的100+个面试题【含答案】

一、基础理论 1、开场介绍 介绍要领:个人基本信息、工作经历、之前所做过的工作及个人专长或者技能优势。扬长避短,一定要口语化,语速适中。沟通好的就多说几句,沟通不好的话就尽量少说两句。举例如下: 面试官你好&…...

A4-C四驱高防轮式巡检机器人

在当今数字化和智能化迅速发展的时代,旗晟智能带来了一款革命性的创新产品——A4-C四驱高防轮式巡检机器人。这款机器人以其卓越的性能和多功能性,为工业巡检领域带来了全新的解决方案。 一、产品亮点 1、四驱动力与高防护设计 四驱高防轮式巡检机器人…...

Https网站如何申请免费的SSL证书及操作使用指南

前言 在当今互联网环境下,HTTPS已成为网站安全的标配,它通过SSL/TLS协议为网站数据传输提供加密,保障用户信息的安全。申请并部署免费SSL证书,不仅能够提升网站的专业形象,还能增强用户信任。本文将详细介绍如何在知名…...

实现资产优化管理:智慧校园资产分类功能解析

在构建智慧校园的过程中,细致入微的资产管理是确保教育资源高效运作的关键一环,而资产分类功能则扮演着举足轻重的角色。系统通过精心设计的分类体系,将校园内的各类资产,从昂贵的教学设备到日常使用的办公物资,乃至无…...

大厂开发必知必会:Devops、CI/CD、流水线和Paas的关系解析说明

为什么作为程序开发人员需要了解ci/cd流程和原理? 作为程序开发人员,了解CI/CD(持续集成/持续交付)的流程和原理具有以下几个重要的理由: 1. 提高代码质量和稳定性 自动化测试:CI/CD流程中集成了自动化测…...

Qt学习:Qt窗口组件以及窗口类型

一、Qt的窗口组件有哪些 Qt是一个跨平台的C应用程序开发框架,它的窗口组件,也称为用户界面元素,为开发者提供了丰富的可视化界面设计选项。在Qt中,窗口组件主要包括: 窗口(Window):…...

基于AGX ORIN与FPGA K7实现PCIE高速数据通信/Orin与FPGA高速数据传输/XDMA在linux系统使用教程

因最近想学习AGX orin和FPGA实现数据高速通信,借此机会和大家一起学习AGX orin和FPGA 制作不易,记得三连哦,给我动力,持续更新!!! 完整工程文件下载:AGX orin与FPGA实现PCIE完整…...

Vue3:全局播放背景音乐

说明&#xff1a;一个全局播放的背景音乐&#xff0c;首页无音乐无音乐图标&#xff0c;在首页互动跳转页面并开始播放音乐&#xff0c;切换页面不需暂停音乐也不会重置音乐&#xff0c;可以通过音乐图标控制暂停或播放。 MusicPlay.vue&#xff08;音乐组件&#xff09; <…...

2024年07月03日 Redis部署方式和持久化

Redis持久化方式&#xff1a;RDB和AOF&#xff0c;和混合式 RDB&#xff1a;周期备份模式&#xff0c;每隔一段时间备份一份快照文件&#xff0c;从主线程Fork一个备份线程出来备份&#xff0c;缺点是会造成数据的丢失。 AOF&#xff1a;日志模式&#xff0c;每条命令都以操作…...

成都仅需浏览器即可快速查看的数据采集监控平台!

LP-SCADA数据采集监控平台无需额外客户端&#xff0c;只需要一个标准的Web浏览器&#xff0c;用户可以迅速访问系统并开始使用&#xff0c;同时支持跨平台访问。一个用户可监控多个过程&#xff0c;多个用户可以监控同一过程&#xff0c;真正实现了数据的开放性及过程信号的透明…...

LLM - 神经网络的训练过程

1. 对于回归问题&#xff0c;用损失函数来计算预测值和真实值的差异&#xff0c;一种常用的公式是如下图所示(Mean Square Error)&#xff0c;如果损失函数的值越小说明神经网络学习越准确&#xff0c;所以神经网络训练目标是减小损失函数的值&#xff0c; 2. 对于分类问题&…...

【全网最全ABC三题完整版】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…...

Python | Leetcode Python题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution:def rob(self, nums: List[int]) -> int:def robRange(start: int, end: int) -> int:first nums[start]second max(nums[start], nums[start 1])for i in range(start 2, end 1):first, second second, max(fi…...

揭秘数据之美:【Seaborn】在现代【数学建模】中的革命性应用

目录 已知数据集 tips 生成数据集并保存为CSV文件 数据预览&#xff1a; 导入和预览数据 步骤1&#xff1a;绘制散点图&#xff08;Scatter Plot&#xff09; 步骤2&#xff1a;添加回归线&#xff08;Regression Analysis&#xff09; 步骤3&#xff1a;分类变量分析&…...

【宠粉赠书】UML 2.5基础、建模与设计实践

为了回馈粉丝们的厚爱&#xff0c;今天小智给大家送上一套系统建模学习的必备书籍——《UML 2.5基础、建模与设计实践》。下面我会详细给大家介绍这本书&#xff0c;文末留有领取方式。 图书介绍 《UML 2.5基础、建模与设计实践》以实战为主旨&#xff0c;结合draw.io免费软件…...

Python中几个重要的集合

Python中几个重要的集合&#xff08;Collection&#xff09;类型&#xff0c;包括列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、集合&#xff08;Set&#xff09;和字典&#xff08;Dictionary&#xff09; 1. 列表&#xff08;List&#xff09; 说…...

【JS】纯web端使用ffmpeg实现的视频编辑器-视频合并

纯前端实现的视频合并 接上篇ffmpeg文章 【JS】纯web端使用ffmpeg实现的视频编辑器 这次主要添加了一个函数&#xff0c;实现了视频合并的操作。 static mergeArgs(timelineList) {const cmd []console.log(时间轴数据,timelineList)console.log("文件1",this.readD…...

解决Python用xpath爬取不到数据的一个思路

前言 最近在学习Python爬虫的知识&#xff0c;既然眼睛会了难免忍不住要实践一把。 不废话直接上主题 代码不复杂&#xff0c;简单的例子奉上&#xff1a; import requests from lxml import etreecookie 浏览器F12网络请求标头里有 user_agent 浏览器F12网络请求标头里有…...

Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例

Step3-VL-10B部署案例&#xff1a;金融APP界面自动化测试&#xff0c;覆盖85%人工回归用例 1. 项目背景与痛点 金融APP的每一次版本更新&#xff0c;都伴随着一场紧张的回归测试。测试团队需要反复验证登录、转账、理财购买、账单查询等几十个核心功能&#xff0c;确保新代码…...

Wan2.2-I2V-A14B部署教程:系统盘50GB+数据盘40GB最小化配置实操

Wan2.2-I2V-A14B部署教程&#xff1a;系统盘50GB数据盘40GB最小化配置实操 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像&#xff0c;特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像最大的特点是开箱即用&#xff0c;内置了完整…...

HuTool代理请求遇阻:深入解析HTTP/1.1 407 Proxy Authentication Required的成因与实战解决方案

1. 当HuTool遇上407&#xff1a;代理认证失败的典型场景 最近在项目中使用HuTool发送HTTPS请求时&#xff0c;突然遇到一个让人头疼的错误——HTTP/1.1 407 Proxy Authentication Required。这个错误就像高速公路上的收费站&#xff0c;明明已经交了通行费&#xff08;设置了代…...

《其他 W3C 活动》

《其他 W3C 活动》 引言 W3C&#xff08;World Wide Web Consortium&#xff0c;万维网联盟&#xff09;是全球领先的互联网技术标准制定机构。自1994年成立以来&#xff0c;W3C致力于推动互联网技术的标准化&#xff0c;为全球的互联网发展做出了重要贡献。除了核心的HTML、CS…...

洛谷 P1833:樱花 ← 混合背包(01 + 完全 + 多重)

【题目来源】 https://www.luogu.com.cn/problem/P1833 【题目描述】 爱与愁大神后院里种了 n 棵樱花树&#xff0c;每棵都有美学值 Ci(0<Ci≤200)。爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸&#xff0c;他懂得如何欣赏樱花&#xff1a;一种樱花树看一遍…...

ROS Noetic下大陆ARS408雷达点云数据解析:从CAN原始帧到RVIZ可视化,一个脚本全搞定

ROS Noetic下大陆ARS408雷达点云数据全链路解析与自动化实践 毫米波雷达在自动驾驶、机器人导航等领域扮演着关键角色。大陆ARS408作为一款高性价比的毫米波雷达&#xff0c;其点云数据的获取与可视化是许多开发者需要掌握的核心技能。本文将带您从底层CAN总线通信开始&#xf…...

深求·墨鉴实战教程:DeepSeek-OCR-2 API接入企业OA系统实现自动归档

深求墨鉴实战教程&#xff1a;DeepSeek-OCR-2 API接入企业OA系统实现自动归档 1. 引言&#xff1a;企业文档管理的痛点与解决方案 在日常办公中&#xff0c;企业每天都会产生大量的纸质文档和电子文件&#xff0c;包括合同、报表、会议纪要、审批单等。传统的人工归档方式不仅…...

Sqoop1 vs Sqoop2:架构之争与选型指南

Sqoop1 vs Sqoop2&#xff1a;架构之争与选型指南1. 引言&#xff1a;两个版本&#xff0c;一个困惑2. 核心差异&#xff1a;从架构到功能的全面对比2.1 架构对比&#xff1a;客户端 vs 客户端-服务器2.2 功能特性详细对比2.3 安全性对比&#xff1a;Sqoop2的核心优势3. 为什么…...

ExcelJS 实战手册:从零构建企业级Excel报表系统

1. ExcelJS入门&#xff1a;为什么选择它构建企业报表&#xff1f; 第一次接触ExcelJS时&#xff0c;我正为一个电商项目头疼——每天要生成近万条订单数据的报表。尝试过直接输出CSV&#xff0c;但客户坚持要带格式的Excel文件&#xff1b;用PHPExcel处理又遇到内存溢出。直到…...

SDXL-Turbo在虚拟现实中的应用:实时环境生成技术

SDXL-Turbo在虚拟现实中的应用&#xff1a;实时环境生成技术 想象一下&#xff0c;在虚拟世界中每走一步&#xff0c;周围的景色就随之变化——茂密的森林在你眼前生长&#xff0c;古老的城堡在远处拔地而起&#xff0c;这一切都发生在眨眼之间。这不是魔法&#xff0c;而是SDX…...