javascript 数组处理的两个利器: `forEach` 和 `map`(上)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
文章目录
- 一、引言
- 介绍 `forEach`和 `map`的背景和用途
- 二、 `forEach`方法的详解
- 三、 `map`方法的详解
一、引言
介绍 forEach
和 map
的背景和用途
forEach
和map
是 JavaScript 中用于处理数组的两个常用方法。
-
forEach
方法:forEach
方法用于遍历数组中的每个元素,并对每个元素执行指定的操作。它是一个用于迭代数组的内置函数,不返回任何值。语法:
array.forEach(function(element, index, array) {// 在这里编写要对每个元素执行的操作 });
示例:
const numbers = [1, 2, 3, 4, 5]; numbers.forEach(function(number) {console.log(number); });
在上述示例中,
forEach
方法遍历数组numbers
中的每个元素,并在每次迭代时将当前元素打印到控制台上。forEach
方法的主要用途是对数组进行迭代操作,例如打印数组中的每个元素、修改数组中的每个元素或执行其他与每个元素相关的操作。 -
map
方法:map
方法用于对数组中的每个元素进行操作,并返回一个新的数组,其中包含对原始数组中每个元素应用操作的结果。语法:
const newArray = array.map(function(element, index, array) {// 在这里编写要对每个元素执行的操作return operationResult; });
示例:
const numbers = [1, 2, 3, 4, 5]; const squareNumbers = numbers.map(function(number) {return number * number; }); console.log(squareNumbers);
在上述示例中,
map
方法遍历数组numbers
中的每个元素,并将其平方后存储在新的数组squareNumbers
中。map
方法的主要用途是对数组进行转换操作,例如将数组中的每个元素加 1、将每个元素转换为字符串或执行其他类型的元素级操作。
forEach
和 map
都是 JavaScript 中用于处理数组的常用方法。forEach
用于迭代和对每个元素执行操作,而 map
用于对每个元素进行操作并返回一个新的数组。选择使用哪个方法取决于你的具体需求。如果你只需要对数组进行迭代并执行操作,而不需要返回新的数组,可以使用 forEach
。如果你需要对每个元素进行操作并返回一个新的数组,可以使用 map
。
二、 forEach
方法的详解
forEach
方法是 JavaScript 中用于遍历数组并对每个元素执行指定操作的一种常用方法。它是 ES5(ECMAScript 5)引入的数组方法之一。
- 基本概念和语法:
forEach
方法接受一个回调函数作为参数,并将该回调函数应用到数组的每个元素上。回调函数接受三个参数:当前遍历的元素、当前元素的索引和整个数组本身。
// 对每个元素执行的操作
array.forEach(function(element, index, array) {
});
- 使用
forEach
遍历数组并执行指定的操作:
以下是一个示例,使用forEach
方法遍历一个数组,并在控制台上打印出每个元素的值:
const numbers = [1, 2, 3, 4, 5];numbers.forEach(function(number) {console.log(number);
});
在上面的示例中,forEach
方法遍历数组numbers
,并对于每个元素number
,执行了console.log(number)
的操作,将每个元素打印到控制台上。
forEach
方法的优缺点:
优点:
- 简洁易用:
forEach
方法提供了一种简单的方式来遍历数组并对每个元素执行操作,无需显式编写循环逻辑。 - 性能高效:
forEach
方法的执行速度通常相对较快,因为它是在 JavaScript 引擎内部实现的。 - 代码可读性:使用
forEach
可以使代码更清晰和易于理解,因为它明确表达了对数组元素的操作。
缺点:
- 不支持中途跳出或返回值:
forEach
方法是一个用于迭代的“只读”方法,它无法中途跳出循环或返回一个值。如果需要在迭代过程中进行条件判断或提前终止循环,或者需要返回一个值,就需要使用其他的方法,如for
循环或filter
方法。 - 无法修改原始数组:
forEach
方法无法直接修改原始数组。如果需要在遍历过程中修改数组元素,需要使用其他方法,如for
循环或reduce
方法。
- 使用示例:
以下是一些使用forEach
方法的示例:
// 打印数组元素
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {console.log(number);
});// 对数组元素进行求和
const numbers = [1, 2, 3, 4, 5];
let sum = 0;numbers.forEach(function(number) {sum += number;
});console.log(sum);// 检查元素是否满足条件
const numbers = [1, 2, 3, 4, 5];numbers.forEach(function(number) {if (number % 2 === 0) {console.log(number + " 是偶数");} else {console.log(number + " 是奇数");}
});
这些示例展示了如何使用forEach
方法遍历数组并执行不同的操作,包括打印元素、求和以及检查元素的条件。
三、 map
方法的详解
map
方法的基本概念和语法:
map
方法是 JavaScript 中数组对象的一个方法,它用于对数组中的每个元素进行操作,并返回一个新的数组,新数组的元素是对原数组元素应用操作后的结果。
语法如下:
const newArray = arr.map(function(element, index, array) {// 返回操作后的元素return operation(element);
});
其中,arr
是要进行操作的原数组,function(element, index, array)
是一个回调函数,它接受三个参数:当前遍历的元素element
、当前元素的索引index
和整个数组array
。回调函数应该返回操作后的元素。
- 使用
map
方法对数组进行操作并返回新的数组:
以下是一个示例,使用map
方法将数组中的每个元素加 1:
const numbers = [1, 2, 3, 4, 5];
const plusOneNumbers = numbers.map(function(number) {return number + 1;
});
console.log(plusOneNumbers);
在上述示例中,map
方法对数组numbers
中的每个元素执行了number + 1
的操作,并返回了一个新的数组plusOneNumbers
,其中的元素是原数组每个元素加 1 后的结果。
map
方法的优缺点:
优点:
- 简洁易用:
map
方法提供了一种简单的方式来对数组进行批量操作,并返回一个新的数组。 - 性能高效:
map
方法是在 JavaScript 引擎内部实现的,因此在处理大型数组时效率较高。 - 链式调用:
map
方法返回的是一个新的数组,可以方便地进行链式调用,进一步对返回的数组进行操作。
缺点:
- 不支持中途跳出或返回值:
map
方法是一个遍历过程,它必须对每个元素都执行回调函数,无法中途跳出或返回一个值。 - 无法修改原始数组:
map
方法返回的是一个新的数组,而不是修改原始数组。如果需要修改原始数组,需要使用其他方法,如for
循环或reduce
方法。
map
的使用示例:
以下是一些使用map
方法的示例:
// 将数组中的每个元素乘以 2
const numbers = [1, 2, 3, 4, 5];
const doubleNumbers = numbers.map(function(number) {return number * 2;
});
console.log(doubleNumbers);// 将对象数组中的每个对象的属性 funName 的值乘以 2
const objects = [{ funName: 10 },{ funName: 20 },{ funName: 30 }
];
const doubleFunNames = objects.map(function(obj) {return { funName: obj.funName * 2 };
});
console.log(doubleFunNames);// 将字符串数组中的每个字符串的首字母大写
const strings = ["apple", "banana", "cherry"];
const capitalizedStrings = strings.map(function(string) {return string.charAt(0).toUpperCase() + string.slice(1);
});
console.log(capitalizedStrings);
这些示例展示了如何使用map
方法对不同类型的数组进行操作,并返回新的数组。
相关文章:
javascript 数组处理的两个利器: `forEach` 和 `map`(上)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
【C语言】SCU安全项目1-FindKeys
目录 前言 命令行参数 16进制转字符串 extract_message1 process_keys12 extract_message2 main process_keys34 前言 因为这个学期基本都在搞CTF的web方向,C语言不免荒废。所幸还会一点指针相关的知识,故第一个安全项目做的挺顺利的,…...
IDA pro软件 如何修改.exe小程序打开对话框显示的文字?
环境: Win10 专业版 IDA pro Version 7.5.201028 .exe小程序 问题描述: IDA pro软件 如何修改.exe小程序打开对话框显示的文字? 解决方案: 一、在IDA Python脚本中编写代码来修改.rdata段中的静态字符串可以使用以下示例代码作为起点(未成功) import idc# 定义要修…...
Ubuntu22.04切换用户
一、只有一个用户时没有切换用户菜单项 1、用户信息 cat /etc/passwd 2、系统菜单 二、添加用户 添加新用户ym,全名yang mi 三、有两个及以上的用户时出现切换用户菜单项 1、用户信息 cat /etc/passwd 2、系统菜单 四、切换用户 1、点击上图中Switch User …...
torch.gather(...)
1. Abstract 对于 pytorch 中的函数 torch.gather(input, # (Tensor) the source tensordim, # (int) the axis along which to indexindex, # (LongTensor) the indices of elements to gather*,sparse_gradFalse,outNone ) → Tensor有点绕,很多博客画各…...
vscode如何开发微信小程序?JS与TS的主要区别?
要在 VS Code 中编写微信小程序代码并同步到 Git,需要安装以下插件: 1. 微信小程序插件(WeChat Mini Program):此插件提供了微信小程序的语法高亮、代码提示、调试、上传等功能。 2. Git 插件(GitLens、…...
产品入门第五讲:Axure交互和情境
目录 一.Axure交互和情境的介绍 1.交互介绍 概念 常见的Axure交互设计技巧 2.情境介绍 概念 常见的Axure情境设计技巧: 二.实例展示 1.ERP登录页到主页的跳转 2.ERP的菜单跳转到各个页面 📚📚 🏅我是默,一个…...
Python 自动化之收发邮件(一)
imapclient / smtplib 收发邮件 文章目录 imapclient / smtplib 收发邮件前言一、基本内容二、发送邮件1.整体代码 三、获取邮件1.整体代码 总结 前言 简单给大家写个如何用Python进行发邮件和查看邮件教程,希望对各位有所帮助。 一、基本内容 本文主要分为两部分…...
Flutter开发笔记 —— sqflite插件数据库应用
前言 今天在观阅掘金大佬文章的时候,了解到了该 sqflite 插件,结合官网教程和自己实践,由此总结出该文,希望对大家的学习有帮助! 插件详情 Flutter的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和batch模式…...
OxLint 发布了,Eslint 何去何从?
由于最近的rust在前端领域的崛起,基于rust的前端生态链遭到rust底层重构,最近又爆出OxLint,是一款基于Rust的linter工具Oxlint在国外前端圈引起热烈讨论,很多大佬给出了高度评价;你或许不知道OxLint,相比ES…...
第一次使用ThreadPoolExecutor处理业务
通过对业务逻辑的分析,进行编码,先把第一条sql查出来的数据进行分组,然后分别使用不同的线程去查询数据返回,并添加到原来的数据中。 总感觉哪里写的不对,但是同事们都没用过这个,请大家指教一下ÿ…...
Sharding-Jdbc(6):Sharding-Jdbc日志分析
1 修改配置 将配置文件中的开启分片日志从false改为true Sharding-JDBC中的路由结果是通过分片字段和分片方法来确定的,如果查询条件中有 id 字段的情况还好,查询将会落到某个具体的分片;如果查询没有分片的字段,会向所有的db或者是表都会查…...
centos安装了curl却报 -bash: curl: command not found
前因 我服务器上想用curl下载docker-compress,发现没有curl命令,就去下载安装,安装完成之后,报-bash: curl: command not found 解决方法 [rootcentos ~]# rpm -e --nodeps curl warning: file /usr/bin/curl: remove failed: …...
Re58:读论文 REALM: Retrieval-Augmented Language Model Pre-Training
诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:REALM: Retrieval-Augmented Language Model Pre-Training 模型名称:Retrieval-Augmented Language Model pre-training (REALM) 本文是2020年ICML论文,作者来自…...
java的json解析
import com.alibaba.fastjson.*; public class JsonParser { public static void main(String[] args) { String jsonStr "{\"name\":\"John\", \"age\":30}"; // JSON字符串示例 // 将JSON字符串转换为JSONObject对象 JSONObje…...
Spring事务失效的几种情况
Spring事务失效的几种情况 1、未被Spring管理的类中的方法 这种情况是指:没有在类上添加Service、Repository、Component等注解将类交由Spring管理,然后该类中还有加上了Transactional注解 例如: Service //如果没有添加Service这个注解…...
filter的用法与使用场景:筛选数据
//this.allCollectorList:后台给定的所有可供选择数据 //this.collectorData:目前已经存在选中列表中的数据//目前已经存在选中列表中的数据id getSelIdList() {let eIdList = []this.collectorData.forEach(row => {eIdList.push(row.id)})return eIdList },//在中的数据…...
ClickHouse(18)ClickHouse集成ODBC表引擎详细解析
文章目录 创建表用法示例资料分享参考文章 ODBC集成表引擎使得ClickHouse可以通过ODBC方式连接到外部数据库. 为了安全地实现 ODBC 连接,ClickHouse 使用了一个独立程序 clickhouse-odbc-bridge. 如果ODBC驱动程序是直接从 clickhouse-server中加载的,那…...
网络攻击(一)--安全渗透简介
1. 安全渗透概述 目标 了解渗透测试的基本概念了解渗透测试从业人员的注意事项 1.1. 写在前面的话 在了解渗透测试之前,我们先看看,信息安全相关的法律是怎么样的 中华人民共和国网络安全法 《中华人民共和国网络安全法》由全国人民代表大会常务委员会…...
视频号小店资金需要多少?
我是电商珠珠 视频号团队于22年7月发展了自己的电商平台-视频号小店,相比于抖音电商来讲,可以有效的将公域流量转化为私域,对于商家来说,是一件利好的事情。 可以有效的提高客户的黏性,增加店铺回头客。 有很多想要…...
机器学习项目精选 第一期:超完整数据科学资料合集
大噶吼,不说废话,分享一波我最近看过并觉得非常硬核的资源,包括Python、机器学习、深度学习、大模型等等。 1、超完整数据科学资料合集 地址:https://github.com/krishnaik06/The-Grand-Complete-Data-Science-Materials Pytho…...
档案数字化管理可以提供什么服务?
档案数字化管理提供了便捷、高效和安全的档案管理服务,帮助组织更好地管理和利用自己的档案资源。 具体来说,专久智能档案数字化管理可以提供以下服务: 1. 档案扫描和数字化:将纸质档案通过扫描仪转换为数字格式,包括文…...
第一周:AI产品经理跳槽准备工作
一、筛选意向行业 因素1:行业发展情况 1. 行业发展情况和政策 待补充 2. AI人才市场情况 报告下载:待补充 2023年2⽉,ChatGPT爆⽕在脉脉引发各界搜索和热议,当⽉,“AIGC”、“⼈⼯智能”、“ChatGPT”、“⼤模型”等相关词汇搜索指数达到459.31,同⽐增⻓超5.4倍,内…...
基于核心素养高中物理“深度学习”策略及其教学研究课题论证设计方案
目录 一、课题的提出及意义 二、课题的核心概念及其界定...
通过 Java 17、Spring Boot 3.2 构建 Web API 应用程序
本心、输入输出、结果 文章目录 通过 Java 17、Spring Boot 3.2 构建 Web API 应用程序前言Spring Boot 3.2 更新了哪些内容Java 17 新特性构建步骤花有重开日,人无再少年实践是检验真理的唯一标准通过 Java 17、Spring Boot 3.2 构建 Web API 应用程序 编辑:简简单单 Online…...
go原生http开发简易blog(一)项目简介与搭建
文章目录 一、项目简介二、项目搭建前置知识三、首页- - -前端文件与后端结构体定义四、配置文件加载五、构造假数据- - -显示首页内容 代码地址:https://gitee.com/lymgoforIT/goblog 一、项目简介 使用Go原生http开发一个简易的博客系统,包含一下功能…...
[足式机器人]Part4 南科大高等机器人控制课 Ch09 Dynamics of Open Chains
本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 南科大高等机器人控制课 Ch09 Dynamics of Open Chains 1. Introduction1.1 From Single Rigid Body to Open Chains1.2 Preview of Open-Chain …...
概率论复习
第一章:随机概率及其概率 A和B相容就是 AB 空集 全概率公式与贝叶斯公式: 伯努利求概率: 第二章:一维随机变量及其分布: 离散型随机变量求分布律: 利用常规离散性分布求概率: 连续性随机变量…...
ES客户端RestHighLevelClient的使用
1 RestHighLevelClient介绍 默认情况下,ElasticSearch使用两个端口来监听外部TCP流量。 9200端口:用于所有通过HTTP协议进行的API调用。包括搜索、聚合、监控、以及其他任何使用HTTP协议的请求。所有的客户端库都会使用该端口与ElasticSearch进行交互。…...
GitHub入门命令介绍
GitHub是当今最受欢迎的代码托管平台之一,它提供了强大的版本控制和协作功能。 对于初学者来说,熟悉GitHub的基本命令非常重要。下面介绍一些常用的GitHub命令。 一、安装Git 1. Windows系统:在Windows上使用GitHub之前,您需要先…...
怎么做个人网站/域名注册网站有哪些
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋壳。 Deque 继承自 Queue,直接实现了它的有 LinkedList, ArayDeque, ConcurrentLinkedDeque 等。 Dequ…...
现在电商好做吗/云优化软件
作者 | 梦想橡皮擦 责编 | 张文 来源 | 转载自 CSDN 博客 俗话说的好,代码写的少,离职少不了。 最近畅游互联网,发现一些离职小技巧,读后,内心被深深的打动了 但是细细的品过之后,发现对我们程序员不太…...
动态网站 wordpress/免费发布广告信息网
2019独角兽企业重金招聘Python工程师标准>>> #(Linux查看版本当前操作系统内核信息) [rootGE1CSH1MES022V opt]# uname -a Linux GE1CSH1MES022V 3.8.13-16.2.1.el6uek.x86_64 #1 SMP Thu Nov 7 17:01:44 PST 2013 x86_64 x86_64 x86_64 GNU/…...
在线表情包制作网站/自己怎么优化我网站关键词
能够确定鼠标的位置,对于建立 GUI 自动化脚本是很重要的。但光看屏幕,几 乎不能弄清楚像素的准确坐标。如果有一个程序在移动鼠标时随时显示x y 坐标,就会很方便。 总的来说,你希望该程序做到: • 获得鼠标当前的 …...
网站负责人核验现场拍摄照片电子件/网络推广企划
javaone在纸上寻找Oracle OpenWorld / JavaOne会议时间表吗? 当然不是。 我们在旧金山的JavaOne 2016上的所有人都在访问有关数字设备的会议信息。 “这就是推动数字化转型的原因 。 凯捷企业应用副总裁Rahul Gupta表示:“包括您所有客户在内的每个人都…...
wordpress robot/长春关键词优化排名
产品信息管理市场的企业竞争态势 该报告涉及的主要国际市场参与者有SAP、IBM、Oracle、Informatica、Riversand Technologies、Stibo Systems、ADAM Software、Agility Multichannel、Inriver、Pimcore等。这些参与者的市场份额、收入、公司概况和SWOT分析都包含在产品信息管理…...