7个常用的原生JS数组方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
7个常用的原生JS数组方法
- 一、Array.map()
- 二、Array.filter
- 三、Array.reduce
- 四、Array.forEach
- 五、Array.find
- 六、Array.every
- 七、Array.some
- 总结
一、Array.map()
作用: 循环遍历数组并修改,在原数组基础上返回一个新的修改版本,原数组不变。
代码:
let arr = [{name: 'hl',age: 18}, {name: 'zy',age: 19}, {name: 'qq',age: 17}];let resArr = arr.map(item => {return `大家好,我是${item.name},我今年${item.age}岁了`
})console.log(resArr);

场景: 想要修改现有数组的内容并将结果存储为新变量时。
二、Array.filter
作用: 根据特定条件循环遍历数组,检查数组的每个项目是否符合条件,如果符合,则将其返回到新数组中,原数组不变。
代码:
let arr = [{name: 'hl',age: 18}, {name: 'zy',age: 19}, {name: 'qq',age: 17}];let resArr = arr.filter(item => {return item.age <= 18;
})console.log(resArr);

场景: 想要从数组中删除不符合特定条件的项目时。
三、Array.reduce
作用: 接收一个函数作为 累加器 ,数组中的每个值(从左到右)开始缩减,最终返回一个值,原数组不变。
语法: arr.reduce(callback, initialValue)
参数:
- callback :回调函数,包含如下四个参数;
- previousValue: 上一次调用回调返回的值,或者是提供的初始值 initialValue;
- currentValue :数组中当前被处理的元素;
- index :当前元素在数组中的索引;
- array :调用 reduce 的数组;
- initialValue :第一次调用 callback 的第一个参数。
示例1:数组求和
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sum = arr.reduce((prev, cur) => {// 第一次: prev = 0// 后面:prev 上一次callback的返回值,如 0+1 ,1+2等...return prev + cur;
}, 0);
console.log(sum);

示例2:展平数组,将二维数组转化为一维
let arr = [[0, 1], [2, 3], [4, 5]];
let resArr = arr.reduce((prev, cur) => {return prev.concat(cur)
}, []);
console.log(resArr);

示例3:展平数组,将多维数组转化为一维
let arr = [[0, 1], [2, 3], [4,[5,6,7]]];// 递归思想去判断cur是否为数组
const flat = function (arr) {return arr.reduce((prev, cur) => prev.concat(Array.isArray(cur) ? flat(cur) : cur), [])
}console.log(flat(arr));

场景: 想要改变数组的值将数组转换为单个值时,或将多维数组转化为一维数组。
四、Array.forEach
作用: 遍历一个数组并在每个项目上执行一个函数,非常类似于常规 for 循环,是一个经典的方法。
代码:
let arr = [{name: 'hl',age: 18}, {name: 'zy',age: 19}, {name: 'qq',age: 17}];arr.forEach(item => {console.log(`我是${item.name}`);
})

场景: 只想遍历任何数组的每个项目而无需构造新数组时。
五、Array.find
作用: 与 .filter() 很类似,可以传入数组符合条件的判断,但是 仅返回与提供条件匹配的第一个元素。
代码:
let arr = [{name: 'hl',age: 18}, {name: 'zy',age: 19}, {name: 'qq',age: 17}]; let resItem = arr.find(item => {return item.age <= 18
})console.log(resItem);

场景: 当需要获取通过显式定义的测试的数组的第一项时。
六、Array.every
作用: 检查数组中的每个元素是否通过提供的条件,如果数组中的所有元素都符合条件,则该方法将返回 true;如果有一项不符合,则返回 false。
代码:
let arr = [{name: 'hl',age: 18}, {name: 'zy',age: 19}, {name: 'qq',age: 17}]; let flag1 = arr.every(item => {return item.age < 19;
})let flag2 = arr.every(item => {return item.age < 20;
})console.log(flag1); // false:有一项不符合
console.log(flag2); // true: 全部符合
场景: 想要确认数组的每个项目是否都通过显式定义的条件时。
七、Array.some
作用: 与方法.every()类似,但是不需要数组中的所有元素都通过测试,找到成功的数组元素,即停止并返回 true,否则返回 false。
代码:
let arr = [{name: 'hl',age: 18}, {name: 'zy',age: 19}, {name: 'qq',age: 17}]; let flag = arr.some(item => {return item.age < 19;
})console.log(flag); // true
场景: 想要确认数组中是否有存在某个项目可以通过显式定义的条件时。
总结
JavaScript 给我们提供了很多处理数组的不同方法。使用这些方法,可以代替 for 循环,将JS开发技能升级,并使代码库更具可维护性。
相关文章:
7个常用的原生JS数组方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 7个常用的原生JS数组方法一、Array.map()二、Array.filter三、Array.reduce四、Array.forEach五、Array.find六、Array.every七、Array.some总结一、Array.map() 作用&#…...
一、一篇文章打好高数基础-函数
1.连续函数的性质考点分析函数的连续性主要考察函数的奇偶性、有界性、单调性、周期性。例题判断函数的奇偶性的有界区间为() A.(-1,0) B(0,1) C(1,2) D(2,3)2.闭区间上连续函数的性质考点分析闭区间上连续函数的性质主要考察函数的最大最小值定理、零点…...
pipenv的基本使用
一. pipenv 基础 pipenv安装: pip install pipenvpipenv常用命令 pipenv --python 3 # 创建python3虚拟环境 pipenv --venv # 查看创建的虚拟环境 pipenv install 包名 # 安装包 pipenv shell # 切换到虚拟环境中 pip list # 查看当前已经安装的包࿰…...
OpenCV入门(三)快速学会OpenCV2图像处理基础
OpenCV入门(三)快速学会OpenCV2图像处理基础 1.颜色变换cvtColor imgproc的模块名称是由image(图像)和process(处理)两个单词的缩写组合而成的,是重要的图像处理模块,主要包括图像…...
基于PySide6的MySql数据库快照备份与恢复软件
db-camera 软件介绍 db-camera是一款MySql数据库备份(快照保存)与恢复软件。功能上与dump类似,但是提供了相对有好的交互界面,能够有效地管理导出的sql文件。 使用场景 开发阶段、测试阶段,尤其适合单人开发的小项目…...
BI不是报表,千万不要混淆
商业智能BI作为商业世界的新宠儿,在市场上实现了高速增长并获得了各领域企业的口碑赞誉。 很多企业把商业智能BI做成了纯报表,二维表格的数据展现形式,也有一些简单的图表可视化。但是这些简单的商业智能BI可视化报表基本上只服务到了一线的…...
sizeof以及strlen的用法以及注意事项
大家都知道,在c中算字符串长度和所占空间大小事不可避免的,甚至再有的时候,我们在写代码的过程中,就会用到这些数据。比如,下面这道题 struct Test { int Num; char *pcName; short sDate; char cha[2]; short sBa[4];…...
数据结构-链表-单链表(3)
目录 1. 顺序表的缺陷 2. 单链表 2.1 单链表的基本结构与接口函数 2.2 重要接口 创建新节点的函数: 2.2.1 尾插 2.2.2 头插 2.2.3 尾删 2.2.4 头删 2.2.5 查找 2.2.6 插入 2.2.7 删除 2.2.8 从pos后面插入 2.2.9 从pos后面删除 3. 链表的缺陷与优势&…...
【SpringBoot初级篇】JdbcTemplate常用方法
【SpringBoot初级篇】JdbcTemplate常用方法JdbcTemplate 查询JdbcTemplate 插入、更新、删除execute执行任意的SQLNamedParameterJdbcTemplate函数场景说明update(String sql, Nullable Object… args)增,删,改queryForObject(sql, Integer.class)查询返…...
React(三):脚手架、组件化、生命周期、父子组件通信、插槽、Context
React(三)一、脚手架安装和创建1.安装脚手架2.创建脚手架3.看看脚手架目录4.运行脚手架二、脚手架下从0开始写代码三、组件化1.类组件2.函数组件四、React的生命周期1.认识生命周期2.图解生命周期(1)Constructor(2&…...
[教程]使用 Git 克隆指定分支
Git 是我们开发过程中经常使用到的版本管理工具,在平常情况下我们从远程克隆的时候会将整个库克隆下来,这会包括整个版本库的历史提交记录和远程库里的所有分支。但在一些情况下,比如我们并不需要查看历史提交记录而只是希望能够获取到最新的代码&#x…...
Redis实现服务注册与服务发现源码阅读(Go语言)
Redis实现服务注册与服务发现源码阅读 背景 近期在看开源项目CloudWeGo中看到目前GoLang微服务框架Hertz中支持通过Redis实现服务注册与服务发现功能。便想着阅读下源码 源码阅读 gut clone了hertz-contrib后看到在一级目录下有目前各种主流的服务注册与发现的实现方案。为…...
论文复现-3
模型构建中的运算 数据集是CONLL03 这个数据集共有4种实体类型,所以,在做实体描述的embedding时,得到的语义表示的Tensor大小为 : 4*max_len, 具体指的是: type_input_ids: torch.LongTensor None, type_attention_m…...
667知识点 | 经过三年实战检验的667知识清单
文章目录 前言第一章 信息与信息资源第二章 信息社会第三章 信息交流第四章 信息技术第五章 信息组织第六章 信息管理活动第七章 信息资源人文管理第八章 信息资源经济管理第九章 信息资源系统管理第十章 信息资源管理专门化前言 参考书目:《信息管理导论(第三版)》党跃武推…...
后端快速上手前端三剑客 HtmlCSSJavaScript
文章目录前言HTML1.基础标签2.多媒体标签:3.表格&列表&布局4.表单CSS1.简介2.导入方式3.选择器JavaScript1.简介2.引入方式3.基本语法4.对象(1) 基本对象(2) BOM对象(3) DOM对象5.事件前言 结构:HTML 表现:CSS 行为:Java…...
Cdiscount、Allegro如何利用测评补单自养号提升店铺权重和流量
Allegro成立于 1999 年是在波兰最受欢迎的电商平台,75%的波兰人都知道该网站,Allegro的品牌认知度在波兰高达98%。Allegro平台卖家的数量目前还是比较少的约为13万,最重要的就是中国卖家占比少,所以竞争也比较低,像是美…...
第16天-性能压测:压力测试,性能监控,优化QPS,Nginx动静分离
1.性能监控 1.1.JVM架构 运行时数据区: 方法区:最重要的内存区域,多线程共享,保存了类的信息(名称、成员、接口、父类),反射机制是重要的组成部分,动态进行类操作的实现;…...
【python 基础篇 十一】python的函数-------函数的偏函数 高阶函数 返回函数 匿名函数 闭包
目录1.偏函数2.高阶函数3.返回函数4.匿名函数5.闭包1.偏函数 概念 当我们写一个参数比较多的函数时,如果有些参数,大部分场景下都是某一个固定值,那么为了简化使用,就可以创建一个新函数,指定我们要使用的函数的某个…...
妇女节到了,祝福所有女神 Happy Women‘s Day!
在每年3月8日人们庆祝妇女节 Womens Day is cllebrated on March 8 every year.国际妇女节(IWD),中国内地称“三八”国际劳动妇女节或国际劳动妇女节。是在每年的3月8日为庆祝妇女在经济、政治和社会等领域作出的重要贡献和取得的…...
etcd集群通过 Leader 写入数据,为什么K8s HA集群中讲每个 kube-apiserver 只和本机的 ETCD 通信
写在前面 对这个我不太明白,所有在 stackOverflow 的请教了大佬这里分享给小伙伴理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整…...
语音模块避坑指南:从命令词表到固件升级的9个关键步骤
语音模块开发实战:从命令词配置到固件优化的全流程精要 在智能硬件开发领域,语音交互模块的集成往往成为项目成败的关键分水岭。不同于简单的API调用,完整的语音解决方案涉及声学模型训练、命令词表设计、播报音管理、固件打包等十余个技术环…...
Wan2.2-I2V-A14B实战案例:文旅局AI宣传片自动生成降本提效50%
Wan2.2-I2V-A14B实战案例:文旅局AI宣传片自动生成降本提效50% 1. 文旅宣传片制作的新解法 文旅宣传片制作一直面临着高成本、长周期、创意瓶颈等痛点。传统方式需要组建专业团队,从策划、拍摄到后期制作,往往耗时数周甚至数月,单…...
如何用AMLL打造媲美Apple Music的动态歌词体验:3步实现沉浸式音乐播放器
如何用AMLL打造媲美Apple Music的动态歌词体验:3步实现沉浸式音乐播放器 【免费下载链接】applemusic-like-lyrics An Apple Music style lyric player component, with React & Vue support. 一个类 Apple Music 歌词显示组件,同时提供 React 和 Vu…...
别再只会用单引号了!Matlab char函数从数字到字符的保姆级转换指南
Matlab字符转换艺术:超越单引号的数据表达革命 在数据处理的世界里,数字和字符之间的界限常常模糊不清。想象一下这样的场景:你刚从实验室收集到一整套温度传感器数据,数值精确到小数点后四位,但项目报告需要将这些数…...
告别数据混乱!Qt Qml中ListModel、XmlListModel等5种数据模型实战对比与选型指南
Qt Qml数据模型实战指南:5种核心方案深度解析与选型策略 在构建现代QML界面时,数据模型的选择往往决定了应用的响应速度、开发效率和长期可维护性。想象一下这样的场景:当用户滑动新闻列表时出现卡顿,或是商品图片加载迟缓&#…...
OpenWrt Turbo ACC终极指南:3步让你的路由器飞起来
OpenWrt Turbo ACC终极指南:3步让你的路由器飞起来 【免费下载链接】turboacc 一个适用于官方openwrt(22.03/23.05/24.10) firewall4的turboacc 项目地址: https://gitcode.com/gh_mirrors/tu/turboacc 还在为家庭网络卡顿、游戏延迟高而烦恼吗?今…...
NATAPP 隧道连接与常见故障排查实战指南
1. NATAPP 隧道连接基础与常见错误类型 第一次接触NATAPP的朋友可能会觉得隧道连接是个复杂的概念,其实它就像是在你家和外界之间搭了一座桥。我刚开始用的时候也踩过不少坑,后来才发现大多数问题都有规律可循。NATAPP的核心功能就是帮我们把本地服务暴…...
aidegen实战指南:一键生成AOSP项目的IDE配置,提升Java与C/C++开发效率
1. 为什么你需要aidegen来配置AOSP开发环境 第一次接触AOSP源码的开发者,往往会被它庞大的代码量和复杂的模块依赖关系吓到。我记得刚开始接触Android底层开发时,光是让IDE能正确识别代码跳转就花了整整两天时间。手动配置IntelliJ或者Android Studio的…...
5分钟掌握Lenovo Legion Toolkit:拯救者笔记本性能优化的终极指南
5分钟掌握Lenovo Legion Toolkit:拯救者笔记本性能优化的终极指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit …...
终极指南:如何在Mac上完整备份和查看微信聊天记录
终极指南:如何在Mac上完整备份和查看微信聊天记录 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 还在为丢失微信聊天记录而烦恼吗?WeChatExporte…...
