问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JavaScript数组操作必须熟练运用的10个方法

发布网友 发布时间:2024-09-05 23:11

我来回答

1个回答

热心网友 时间:2024-10-23 09:51

JavaScript提供了大量不同的处理数组的方法,这里花几分钟时间介绍10个项目中可以用到的数组方法。

1.Array.map()

使用.map()方法,可以创建一个基于原始数组的修订版数组。.map()方法接受一个函数,该函数遍历数组中的所有项并进行相应的修改。

当需要更新数组中的所有项并将其存储到一个新数组中时,.map()方法就可以派上用场了。

例如有一个文章列表的数组,如下:

constarticles=[{article_id:"6976209276364652558",title:"如何在Vue的计算属性中传递参数",views:1258,},{article_id:"6976113133358153736",title:"Angular数据状态管理框架:NgRx/Store",views:2258,},{article_id:"6975722363241365534",title:"Angular管道PIPE介绍",views:1568,},];

现在基于上面文章列表数组,获取所有title组成的数组,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);

输出的结果如下:

['如何在Vue的计算属性中传递参数','Angular数据状态管理框架:NgRx/Store','Angular管道PIPE介绍']

当然,只要是数组都可以使用.map(),接下来就基于上面标题数组,增加作者信息,如下:

constarrayTitlesWithAuthor=arrayTitles.map((title)=>`《${title}》作者:天行无忌`);console.log(arrayTitlesWithAuthor);

输出结果如下:

['《如何在Vue的计算属性中传递参数》作者:天行无忌','《Angular数据状态管理框架:NgRx/Store》作者:天行无忌','《Angular管道PIPE介绍》作者:天行无忌']

.map()方法是一个用来创建新数组、修改其内容并保持原始数组不变的通用方法。当出现需要修改现有数组的内容并将结果存储为新变量的时候就可以用。

2.Array.filter()

从方法名称可以很容易知道其用途,没错用于过滤数组元素。

filter()方法根据特定条件获取数组中的元素,像.map()方法一样,它将返回一个新数组,并保持原始数组不变。

基于上面的articles数组,分别获取views小于2000的和大于2000的文章列表:

constlessArticles=articles.filter((item)=>item.views<2000);constmuchArticles=articles.filter((item)=>item.views>2000);console.log(lessArticles);console.log("\r\n==========================================\r\n");console.log(muchArticles);

输出的结果如下:

[{article_id:'6976209276364652558',title:'如何在Vue的计算属性中传递参数',views:1258},{article_id:'6975722363241365534',title:'Angular管道PIPE介绍',views:1568}]==========================================[{article_id:'6976113133358153736',title:'Angular数据状态管理框架:NgRx/Store',views:2258}]

当需要从数组中删除不符合特定条件的元素时,可以使用.filter()。

3.Array.find()

.find()方法看起来很像前面介绍的.filter()方法。跟.filter()方法一样,将匹配的条件的元素返回,区别在于,.find()将只返回与提供的条件匹配的第一个元素,不是数组。

将上面的.filter()方法改为.find(),如下:

constlessArticle=articles.find((item)=>item.views<2000);constmuchArticle=articles.find((item)=>item.views>2000);console.log(lessArticle);console.log("\r\n==========================================\r\n");console.log(muchArticle);

输出结果如下:

{article_id:'6976209276364652558',title:'如何在Vue的计算属性中传递参数',views:1258}=========================================={article_id:'6976113133358153736',title:'Angular数据状态管理框架:NgRx/Store',views:2258}

什么时候使用Array.find()?当需要获取数组通过定义条件的第一个元素时。

4.Array.findIndex()

.findIndex()方法在名称上跟.find()前半部分一样,其实现的功能和.find()一样,其区别在于返回值不一样,只返回与提供的条件匹配的第一个元素的索引值。

constlessArticle=articles.findIndex((item)=>item.views<2000);constmuchArticle=articles.findIndex((item)=>item.views>2000);console.log(lessArticle);//0console.log(muchArticle);//1

什么时候使用Array.findIndex()?当需要获取数组通过定义条件的第一个元素所在数组中的索引值时。

5.Array.forEach()

.forEach()方法的工作方式很像常规的for循环,遍历一个数组并在每个元素上执行一个函数。.forEach()的第一个参数是回调函数,它包含循环数组的当前值和索引。

如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);0

输出结果如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);1

当需要简单地循环遍历数组的每个元素而不需要构建新数组时。

6.for...of

for...of是es6推出的迭代器,号称最简洁,可以是用break,continue和return终止循环。跟.forEach()不同的是,不提供数组索引。跟for语句相比代码少得多,更简洁。

下面代码遍历输出数组,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);27.for...in

这个方法跟上面的for...of语法上看起来相似,for...of是对值的遍历,for...in是对key/index的遍历。for...in应用于数组则key对应的就是数组的索引值,应用于对象则key对应键值。

来看代码执行效果,先应用于数组,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);3

上面代码输出的是数组的索引值:0、1、2,下面应用于数组第一个对象,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);4

输出的就是:article_id、title、views。

在实际开发中不提倡使用for...in,如果需要遍历对象属性,推荐使用Object.keys。

8.Array.every()

.every()方法将检查数组中的每个元素是否都通过提供的条件,如果数组中的所有元素都通过条件,则将返回true,如果没有,将返回false。

例如,检查articles数组所有的文章views都超过1000,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);5

检查articles数组所有的文章views都超过2000,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);6

什么时候使用Array.every()?当需要确认数组的每一项都通过定义的条件时。

9.Array.some()

.some()方法和.every()方法类似,但验证的结果是相反的,如果数组中的所有元素只要有一个通过条件,则将返回true,如果所有的元素都不通过条件,将返回false。

.some()方法和.every()方法在文章《7个你应该掌握的JavaScript编码技巧》中介绍了如何实现逻辑and和or。

例如,检查articles数组所有的文章views是否有views超过2000的文章,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);7

检查articles数组所有的文章是否有views超过3000的文章,如下:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);810.Array.rece()

前面专门为此方法分享过一篇文章《javascript数组之includes、rece》。

.rece()方法接受一个回调函数作为其第一个参数,一个可选的初始值作为其第二个参数。如果没有提供初始值,则使用第一个数组元素作为值。回调函数提供一个累加器accumulator和currentValue参数,用于执行rece计算。

这里就简单举个例子,对articles数组的views进行累加求和:

constarrayTitles=articles.map((item)=>item.title);console.log(arrayTitles);9

使用.rece()方法可以用于展平一个数组,当然已经有很多方法可以做到这一点,这就是其中的方法之一。

['如何在Vue的计算属性中传递参数','Angular数据状态管理框架:NgRx/Store','Angular管道PIPE介绍']0总结

JavaScript提供了大量不同的处理数组的方法,本文介绍的10个在日常项目开发中使用频率比较高的数组处理方法,可以作为基础知识收藏。

web前端---9个提高JavaScript 技能必须知道的数组方法

sort():对数组进行排序,对数字和字符串都有用,如按升序排列数字或字母。includes():检查数组是否包含特定元素,如验证数据中是否存在“Programmer”。forEach():将函数应用于数组每个元素,如在字典数组中查找键值匹配。concat():合并两个数组,如将两个数字数组连接成一个。通过了解和熟练运用这些方...

一文掌握JavaScript数组常用方法

栈和队列方法用于在开头或末尾向数组中添加元素或从数组中删除元素。 子数组方法用于提取、删除、插入、填充和复制更大数组的连续区域。 搜索和排序方法用于在数组中查找元素和对数组元素排序。 数组到字符串的转换方法。 接下来,我们创建一个雇员的数组,用于演示数组的方法。letemp=[{empId:1,empName:"刘德华",sex...

常用的15个数组方法

1. push/unshift: 动态扩容 push方法在数组尾部添加元素,返回新数组长度,而unshift则是在头部添加,同样返回新的长度。它们是数组扩展的快捷键,让你轻松添加元素。2. pop/shift: 清理前端 pop从尾部移除并返回元素,shift则是从头部移除,同样返回移除的元素。这两个方法在需要清理数组前端或尾部时特别...

常用的15个数组方法

首先,`push()` 和 `unshift()` 方法用于在数组的尾部和头部添加元素。`push(item1, item2, ..., itemX)` 将一个或多个元素添加到数组的末尾,而 `unshift(item1, item2, ..., itemX)` 则将一个或多个元素添加到数组的开头。`pop()` 和 `shift()` 方法用于在数组的尾部和头部删除...

13个js数组精简技巧操作,你都会了吗

清空数组,仅需将数组的length属性设为0即可。将数组转换为对象,使用展开运算符(...),快速实现数组到对象的转换。数据填充数组,利用.fill()方法,可快速填充数组中特定值。数组合并,通过展开操作符,可轻松将多个数组合并为一个。求两个数组的交集,先去重,再利用.filter和.includes方法查找交集。删...

Javascript中数组的常用方法有哪些?

join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。pop()删除并返回数组的最后一个元素 push()向数组的末尾添加一个或更多元素,并返回新的长度。reverse()颠倒数组中元素的顺序。shift()删除并返回数组的第一个元素 slice()从某个已有的数组返回选定的元素 sort()对数组的元素...

分享20个Javascript中的数组方法,收藏

JavaScript中的数组方法是编程中不可或缺的工具,本文将介绍20个实用技巧。数组,作为编程语言中的数据结构,允许存储并操作多个值。以下是这20个方法的概览:1. 声明数组新数组法:使用`new Array()`指定元素,如`let myArray = new Array(1, 2, 3);`数组文字表示法:`let anotherArray = [4,...

如何在JavaScript中操作二维数组

二维数组在JavaScript开发中是比较常见的数据结构,在本文将介绍如何使用JavaScript创建二维数组并对其进行操作,在JavaScript中常见的数组操作方法大概10个左右,可以参阅《JavaScript数组操作必须熟练运用的10个方法》。多维数组JavaScript本身不提供多维数组,但是,可以通过定义元素数组来创建多维数组,其中每个元素...

js数组的常见操作( push、pop、unshift、shift、splice、concat、 j...

JavaScript数组操作是开发中常见的任务,涉及到元素的增删、替换以及数组间的连接与分割。以下是几种主要方法的使用实例:首先,对于数组的头部和尾部操作,有以下几个方法:push():向数组尾部添加元素,返回新的长度。例如:let arr = [1, 2];arr.push(3); // arr: [1, 2, 3], length: 3...

JavaScript基础 - 遍历数组的12种方法

首先,最基础的遍历方式是使用for循环,有普通版和优化版之分,它们都支持break、continue和return语句。其次,forEach方法通过回调函数逐项处理数组,但不支持上述语句,而map与forEach类似,但有返回值。for-of则适用于可迭代对象,如数组、Map、Set等,但不适用于普通对象。filter用于筛选数组,返回符合...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我更新了win7QQ拼音在游戏上(剑侠情缘2)不能打字?打出来的都是... 游漓江的船票在哪里买最方便?如何去 因为我想看剑侠情缘,又不想下载什么PPS啊,QQ直播之类软件, 最好是类似... ...两部手机下载相同的手游剑侠情缘却是不一样的都是在QQ上下载的 教子小书坊:一位外交官父亲给孩子的家书图书信息 教子小书坊:一位外交官父亲给孩子的家书内容简介 高二孩子和家长逆反如何教育 高二孩子和家长逆反怎么办 叛逆期孩子怎么教育沟通叛逆期孩子如何教育沟通 请问用otg连接鼠标和键盘后怎么玩手机上的全民枪战,求教程。带图的给... 去邮局寄包裹的步骤是怎么样?我没去做.不好意思问下大家 javascript中的作用域和执行上下文 javascript和web的关系(javaweb和javascript) 前端基石:面向对象的细节知识(较长) new关键字相关知识点总结 javascript进阶知识4-正则表达式 javascript要学什么? javascript有哪些方面的知识? 兽皮痣右胳膊小臂长有黑色毛发胎记,哪家医院治疗最专业?【兽皮痣... 沈丘县胎记医院脸上有一点五分硬币那么大手术费多少钱 祛除面部胎记多少钱 有首歌里面有一句(几千年礼仪之帮)叫什么名字? ...其中有两句歌词是:五千年礼仪之邦,泱泱我大中华,天是坤,地是... 描写泉水的好段? 唯物主义是什么意思呀 唯物主义的意思 黄柏煮水的功效与作用 黄柏的功效与作用是什么 吕继宏出版专辑 离婚判决之后还能再起诉吗? 两次起诉离婚没有判离还能起诉吗? JavaScript之彻底理解原型与原型链 哈密瓜怎么去皮切块 哈密瓜怎么削皮 哈密瓜削皮方法 什么是肥厚型心肌病?可怕吗? 肥厚型心肌病临床上的特点 肥厚型心肌病的鉴别方法 肥厚型心肌病临床表现 肥厚型心肌病心脏彩超的表现 关于《琼明神女录》 底特律大都会国际机场简介 工作超十年被公司降职降薪,又唔出书面通知,只是收到口头通知,如何是好... ...口头通知降职降薪 然后公司又不出书面通告 这怎么办? 给老人送礼应该考虑哪些问题? 给老人送什么礼物比较好啊? 给80岁老人买礼物送什么好? 给老人送礼物送什么好? 朋友欠钱写了借条一直不还钱怎么起诉 保温杯总进虫子怎么办 我早上到办公室十有八九都发现保温杯里面有一个虫子进去,不知道从哪里... 狗狗要生了有什么征兆?