关于 JavaScript 数组的遍历函数:map, reduce, filter 等

news2024/11/19 15:36:18

JavaScript 列表的 map 方法是一个常用的数组遍历方法,将会对每一个列表中的元素都应用所给的转换方法,也就是 u => (...),这是 ES6 中匿名函数的表达式写法,在这种使用场景中是一种非常方便的语法糖,map 方法在遍历的过程中,都会将每个元素作为参数传入这个匿名函数中,由形参 u 所接收,最后将匿名函数的返回值替换作为当前位置的新的元素,也就是一个 map 映射的过程。

例如下面的一个简单的映射,将列表的每个值增加 1 1 1

let foo = x => x  + 1;
let a = [1,2,3,4,5];
a = a.map(foo)														// [2,3,4,5,6]

映射过程如下:
[ e 1 , e 2 , e 3 , … , e n ] ⇒ [ f o o ( e 1 ) , f o o ( e 2 ) , f o o ( e 3 ) , … , f o o ( e n ) ] \begin{aligned} &[e_{1}, e_{2}, e_{3},\dots,e_{n}] \Rightarrow[foo(e_{1}), foo(e_{2}), foo(e_{3}),\dots,foo(e_{n})] \end{aligned} [e1,e2,e3,,en][foo(e1),foo(e2),foo(e3),,foo(en)]
根据你的映射函数,可以实现更加复杂的映射效果。

除了 map 函数之外,reduce, filter, find, findIndex 等也都是我们常用的列表遍历函数,最好的尝试方式就是直接在浏览器(建议最新版的谷歌或者Edge)F12 进入开发者模式,在 控制台(Console) 中你可以尝试任何的 JavaScript 表达式,以及函数等,并且浏览器会提示一个对象所有可以使用的属性或者方法:

浏览器 F12 调试

其他列表遍历方法的简单用法介绍如下,用法见注释:

let a = [4, 90, 58, 12, 76, 53];

// reduce(func..., init)
// func 可以接受 4 个参数:
//		prev: 上次的返回值
//		cur: 当前遍历到的数组元素
//		index: 当前遍历到的下标
//		arr: 数组的引用,即数组本身
// init 为初始化的 prev 值
let sum = a.reduce((prev, cur, index, arr) => prev + cur, 0);		// 293

// filter(func...)
// func 接受 1 个参数,就是当前遍历的数组元素,返回 true 则保留,反之过滤
let a_evens = a.filter(i => i % 2 == 0)								// [4, 90, 58, 12, 76]

// find(func...)
// func 参数为当前遍历元素,函数返回值为 true 则立即返回当前元素,停止遍历
let find_result = a.find(i => i > 50)								// 90

// findIndex(func...)
// 效果同 func,但是返回值为第一个匹配的数组元素的 index,不返回数组元素本身
let find_result = a.findIndex(i => i > 50)							// 1

其他列表遍历的函数可以参考上述函数的例子,可以直接 F12 打开控制台,复制代码进入控制台尝试,或者直接搜索引擎或机器人查找相关用法即可

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

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

相关文章

亚马逊鲲鹏系统是怎么引流的?

亚马逊鲲鹏系统有三种引流方式,可设置通过亚马逊站点搜索、站外引流、直接访问产品页面进入到相关产品页面进行操作。 1、通过亚马逊站点搜索 正常的登录到我们的亚马逊主页,然后通过设置关键词及asin,最后进入你指定的产品,进行…

景联文科技高质量成品数据集上新啦!

景联文科技近期上新多个成品数据集,包含图像、视频等多种类型的数据,涵盖丰富的场景,可满足不同模型的多元化需求。 高质量成品数据集可用于训练和优化模型,使得模型能够更加全面和精准地理解和处理任务,更好地应对复…

QT中使用ffmpeg的api进行视频的播放

在了解ffmpeg使用api进行视频的播放之前,我们首先了解一下视频的播放流程。 一、视频的播放流程 首先是我们最常见的视频文件,在播放流程中首先是要打开视频文件,将视频文件中的数据进行解封装,之后再将解封装之后的视频进行解码…

仅需6GB显存,拥有专属AI代码助手

清华GLM技术团队打造的多语言代码生成模型CodeGeeX近期更新了新的开源版本「CodeGeeX2-6B」。CodeGeeX2是多语言代码生成模型CodeGeeX的第二代模型,不同于一代 CodeGeeX ,CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现。得益于 ChatGLM2 的更优性能…

Dos常用命令有哪些?具体的使用方式是什么?

1. 常用命令 对我们来说,掌握几个常见的dos命令即可,如下: dir:列出当前目录下所有的文件及文件夹; md:创建一个文件夹; rd:删除一个空目录; cd:进入指定…

第二章 圣诞夜的滑雪场

系列文章目录 第一章 修学旅行(凯撒密码、栅栏密码) 前言 这一章借鉴了基德大人和青子小姐的剧情,感兴趣的童鞋可以看一看哟!(本人柯迷) 摩斯密码 到了下午,老师将大家聚在一起,笑…

云主机OOM宕机原因分析及处理

一、故障现象 某次服务器告警宕机故障,无法ssh连入,控制台登录后查看,发生OOM事件,OOM就是我们常说的Out of Memory内存溢出,它是指需要的内存空间大于系统分配的内存空间,导致项目程序crash,甚…

Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置

目录 Ubuntu20.04 QT5.14.2 VTK8.2.0 PCL 1.10 环境配置一、VTK 编译和安装1、库依赖:2、下载资源:[下载VTK8.2.0](https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz)3、编译:4、安装5、qtcreator 配置编译的libQVTKWidgetPlugin.…

直播录制怎么录?推荐这3个方法!

随着互联网的发展,直播已经成为了一种热门的社交和内容创作方式。然而,有时候我们可能会错过一些重要的直播内容,因此直播录制成为了很多用户的需求。本文将介绍几种直播录制的方法,通过本文的指导,您将学会如何简单易…

微信新功能,你都知道吗?

近日iOS 微信8.0.40正式版来了,一起来看看有哪些变化? 1、朋友圈置顶 几个月前微信开始内测「朋友圈置顶」功能,从网友们的反馈来看,iOS 微信 8.0.40 似乎扩大了内测范围,更多用户可以体验到该功能了。 大家可以去自己…

第一篇|研究数据哪里来——制造业

制造业是一个国家的立国之本,下面为大家介绍一些制造业行业数据的公开信息网站。对于制造业研究数据,您可以从以下几个途径获取: 1. 政府机构和统计局 许多国家和地区的政府机构会定期发布有关制造业的相关数据和统计报告。您可以访问该国或…

零基础挑战一周拿下2023数学建模国奖

1、 数学建模国赛介绍 1.1 数学建模国赛是什么?如何评奖 全国大学生数学建模竞赛是全国高校规模最大的课外科技活动之一。该竞赛每年9月(一般在上旬某个周末的星期五至下周星期一共3天,72小时)举行,竞赛面向全国大专院…

通用积分球的用途和工作原理

积分球辐射源是一种非常优异的定标光源,其输出的辐亮度面均匀性和稳定性是普通光源无法比拟的。在需要使用面光源的领域,被广泛用于光学探测器的实验室定标,空间光学遥感仪器发射前的地面辐射定标。因此辐射源的稳定性、准确性对于辐射定标非…

构建弹性可扩展的微服务架构:基于Spring Cloud Alibaba 的实践

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 前言 随着互联网业务的…

Netty:ByteBuf可以写入字节数

说明 可以用ByteBuf的maxWritableBytes()得到当前ByteBuf最多还可写入多少字节的数据,它的值等于ByteBuf的最大容量减去当前的writerIndex。 可以使用writableBytes()获得ByteBuf当前还可以写入多少字节的数据,它的值等于ByteBuf的容量减去当前的writer…

连接数据库报错:Bad pocket type 包校验失败

用db连接正式库报错 Bad pocket type 换一个 navicat一样的报错,后来发现是用的数据库不对,沙雕了 重新建立连接,更换成mysql 成功!!!

深度学习(34)—— StarGAN(1)

深度学习(34)—— StarGAN(1) 文章目录 深度学习(34)—— StarGAN(1)1. 背景2. 基本思路3. 整体流程4. StarGAN v2(1) 网络结构(2) mapping network(3) style encoder(4)Loss 和之前…

Spring-1-透彻理解Spring XML的必备知识

学习目标 能够说出Spring的体系结构 能够编写IOC-DI快速入门 思考:为什么学习Spring而不是直接学习SpringBoot 1 Spring介绍 思考:我们为什么要学习Spring框架? 工作上面 Java拥有世界上数量最多的程序员 最多的岗位需求与高额薪资 95%以上服务器端还是要用Jav…

金蝶云星空和吉客云单据接口对接

金蝶云星空和吉客云单据接口对接 接入系统:吉客云 吉客云是基于“网店管家”十五年电商ERP行业和技术积累基础上顺应产业发展需求,重新定位、全新设计推出的换代产品,从业务数字化和组织数字化两个方向出发,以构建流程的闭环为依归…

通过nvm工具快捷切换node.js版本、以及nvm的安装

使用nvm可以实现多个Node.js版本之间切换 步骤目录: 先卸载掉本系统中原有的node版本 去github上下载nvm安装包 安装node 常用的一些nvm命令 1、先卸载掉本系统中原有的node版本 2、去github上下载nvm安装包 https://github.com/coreybutler/nvm-windows/re…