5、js关于数组的常用方法(19种)

一、改变原数组的方法

1.push() 末尾添加数据

语法:

arr.push(要插入的数据可以多个)

        // push 尾部添加数据const arr = [1,2,3,4,5];arr.push(6,7);console.log(arr);//(7) [1, 2, 3, 4, 5, 6, 7]

2. pop() 末尾删除一个数据

语法:

arr.pop() 删除一个数据

        //pop 尾部删除一个数据const arr1 =[1,2,3,4,5,6];arr1.pop();console.log(arr1);//(5) [1, 2, 3, 4, 5]

3.unshift() 头部添加数据

 语法:

arr.unshift(要添加的数据,可以多个)

// unshift头部添加数据const arr2 = [1,2,3,4,5];arr2.unshift(0,3);console.log(arr2);//(6) [0,3, 1, 2, 3, 4, 5]

4.shift() 头部删除一个数据

语法:

arr.shift()删除一个数据 

        // shift头部删除数据const arr3 = [1,2,3,4,5];arr3.shift();console.log(arr3);//(4) [2, 3, 4, 5]

5.reverse() 翻转数组

语法:

arr.reverse

// reverse 翻转数组const arr4 = [1,2,3,4,5];arr4.reverse();console.log(arr4);//(5) [5, 4, 3, 2, 1]

6.sort() 排序

语法:

(1)正常:arr.sort() 按位排序

(2)正序:arr.sort(function(a,b){return(a-b)});

(3)倒序:arr.sort(function(a,b){return(b-a)});

// sort排序const arr5 = [3,12,35,24,40,87,56,2,1,8,4];arr5.sort();console.log(arr5);//(11) [1, 12, 2, 24, 3, 35, 4, 40, 56, 8, 87]// 正序排列arr5.sort(function(a,b){return(a-b)});console.log(arr5);//(11) [1, 2, 3, 4, 8, 12, 24, 35, 40, 56, 87]// 倒序排列arr5.sort(function(a,b){return(b-a)});console.log(arr5);//(11) [87, 56, 40, 35, 24, 12, 8, 4, 3, 2, 1]

7.splice()  截取数组

语法:

(1)arr.splice(开始的位置索引,删除几个) 返回截取后的数组

(2)arr.splice(开始的位置索引,删除几个,要插入的数据可以多个)

// splice截取数组const arr6 = [1,2,3,4,5,6,7]arr6.splice(3,2);console.log(arr6);//(5) [1, 2, 3, 6, 7]const arr7 = [1,2,3,4,5,6,7];arr7.splice(2,1,66,77);console.log(arr7);//(8) [1, 2, 66, 77, 4, 5, 6, 7]

二、不改变原数组的方法

1.concat()  合并数组 

语法:

数组1.concat(数组2,数组3...)    返回一个合并后的新数组

        // concat合并数组const arr8 = [1,2,3,4,5,6,7];total = arr8.concat(8,8,4,2,1,'pp');//arr8.concat(arrx,arry...)console.log(total);//(13) [1, 2, 3, 4, 5, 6, 7, 8, 8, 4, 2, 1, 'pp']console.log(arr8);//原数组不改变

2.join() 数组转字符串

语法:

arr.join('要用什么拼接') 

//join 数组转换为字符串const arr9 = [1,2,3,4,'pp','好的'];total = arr9.join("-");console.log(total);//1-2-3-4-pp-好的console.log(arr9);//原数组不变

 3.slice()截取数组的一部分数据

语法:

arr.slice(开始的索引值,结束的索引值)   返回一个截取后的数组

注意:包前不包后

        // slice截取数组的一部分const arr10 = [1,2,3,4,5,6,7];total = arr10.slice(3,5);console.log(total);//(2) [4, 5]console.log(arr10);//原数组不变

4.indexOf 从左检查数组中这个数值第一次出现的索引

语法一:数组名.indexOf(要查询的数据)

作用: 就是检查这个数组中有没有该数据

如果有就返回该数据第一次出现的索引

如果没有返回 -1

语法二:数组名.indexOf(要查询的数据,开始索引)

// indexOf 从左边检查数组中这个值出现的第一个索引const arr11 = [1,2,3,4,5,6,7,5,5];total = arr11.indexOf(5);console.log(total);//4 返回第一次出现的索引console.log(arr11);//原数组不变

 5.lastIndexOf 从右检查数组中这个数值第一次出现的索引值

语法一:数组名.indexOf(要查询的数据)

作用: 就是检查这个数组中有没有该数据

如果有就返回该数据第一次出现的索引

如果没有返回 -1

语法二:数组名.lastIndexOf(要查询的数据,开始索引)

        // lastIndexOf 从右边开始检查这个值出现的第一个索引const arr12 = [1,2,3,4,5,6,7];total = arr12.lastIndexOf(3);console.log(total);//2console.log(arr12);//原数组不变

 6.map 映射数组

语法:

arr.map(function(item){

return item;

// return item*10; 每一项都*10

})     返回一个和原数组相同的数组

        // map const arr13 = [1,2,3,4,5,6,7];total = arr13.map(function(item){return item;// return item*10; 每一项都*10});console.log(total);//(7) [1, 2, 3, 4, 5, 6, 7]console.log(arr13);//原数组不变

 7.forEach循环遍历

语法:

arr.forEach(function(item,index,arr){})

 +item : 这个表示的是数组中的每一项

  index : 这个表示的是每一项对应的索引

  arr : 这个表示的是原数组

注意:

没有返回值,不会生成新数组,只是循环遍历数组

        // forEach遍历const arr14 = [1,2,3,4,5];arr14.forEach(function(item,index,arr){console.log(item,"---",index,"---",arr);})console.log(arr14);//原数组不变

 8.filter过滤

语法:

arr.filter(function(item){return 条件} 

返回一个过滤后的新数组,原数组不变。

        // filter过滤const arr15 = [1,2,3,4,5,6];total = arr15.filter(function(item){return item>3;})console.log(total);//(3) [4, 5, 6]console.log(arr15);//原数组不变

9.every  判断数组是不是满足所有条件

语法:

数组名.every(function (item,index,arr) {return条件})

+ item : 这个表示的是数组中的每一项

+ index : 这个表示的是每一项对应的索引

+ arr : 这个表示的是原数组

作用: 主要是用来判断数组中是不是 每一个 都满足条件

     只有所有的都满足条件返回的是true

     只要有一个不满足返回的就是false

返回值: 是一个布尔值

注意: 要以return的形式执行返回条件

        // everyconst arr16 = [1,2,3,4,5,6];total = arr16.every(function(item){return item>0;})console.log(total);//trueconsole.log(arr16);//原数组不变

 10.some() 数组中有没有满足条件的

语法:

数组名.some(function (item,index,arr) {return条件})

+ item : 这个表示的是数组中的每一项

+ index : 这个表示的是每一项对应的索引

+ arr : 这个表示的是原数组

作用: 主要是用来判断数组中是不是 每一个 都满足条件

     有一个满足条件就返回true

     都不满足才返回false

返回值: 是一个布尔值

注意: 要以return的形式执行返回条件

        // someconst arr17 = [1,2,3,4,5,6];total = arr17.some(function(item){return item>1;})console.log(total);//trueconsole.log(arr17);//原数组不变

 11.find()用来获取数组中满足条件的第一个数据

语法:

数组名.find(function (item,index,arr) {return条件})

+ item : 这个表示的是数组中的每一项

+ index : 这个表示的是每一项对应的索引

+ arr : 这个表示的是原数组

作用: 用来获取数组中满足条件的数据

返回值: 如果有 就是满足条件的第一个数据;如果没有就是undefined

注意: 要以return的形式执行返回条件

// findconst arr18 = [1,2,3,6];total = arr18.find(function(item){return item>4;})console.log(total);//6console.log(arr17);//原数组不变

12.reduce()叠加后的效果 

语法:

数组名.reduce(function (prev,item,index,arr) {},初始值)

+ prev :一开始就是初始值 当第一次有了结果以后;这个值就是第一次的结果

+ item : 这个表示的是数组中的每一项

+ index : 这个表示的是每一项对应的索引

+ arr : 这个表示的是原数组

作用: 就是用来叠加的

返回值: 就是叠加后的结果

注意: 以return的形式书写返回条件

        // reduceconst arr19 = [1,2,3,6,9];total = arr19.reduce(function(prev,item){return prev += item;})console.log(total);//21 每一项累加的结果console.log(arr19);//原数组不变

 三、总结

改变原数组的:

push末尾添加数据

pop末尾删除一个数据

unshift头部添加数据 

shift 头部删除一个数据

reverse翻转数组 

sort 排序

splice截取数组

不改变原数组的:

concat合并

join数组转字符串

slice截取数组一部分

indexOf左边检查 

lastIndexOf右边检查

map映射数组 

forEach循环遍历

filter过滤

every判断是否都满足条件 

some判断有无满足条件

 find 获取第一个满足条件的数据

reduce叠加

 

 

 

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

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

相关文章

大疆智图_空三二维重建成果传输

一、软件环境 1.1 所需软件 1、 大疆智图:点击下载;   2、 ArcGIS Pro 3.1.5:点击下载,建议使用IDM或Aria2等多线程下载器;   3、 IDM下载器:点击下载,或自行搜索;   4、 Fas…

探索 Noisee AI 的奇妙世界与变现之旅

日赚800,利用淘宝/闲鱼进行AI音乐售卖实操 如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 抖音主播/电商人员有福了,利用Suno创作产品宣传,让产品动起来-小米Su7 用sunoAI写粤语歌的方法,博主已经亲自实践可行 五音不全也…

[经验] 涠洲岛在广西吗 #职场发展#知识分享#媒体

涠洲岛在广西吗 广西涠洲岛,是中国南海上的一颗闪亮明珠,位于广西北部湾沿海,东经108.71度,北纬21.54度,距离北海市区30公里,是中国最大的海岛之一,风景秀丽,气候温和。岛上山青水秀…

!力扣3. 无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是"abc",所以其长度为 3 示例 2: 输入: s "bbbbb" 输出: 1 …

PCE自动装机

服务端和客户端 pxe:c/s模式,允许客户端通过远程服务器(服务端)下载引导镜像,加载安装吻技安,实现自动化安装操作系统。 无人值守:安装选项不需要认为干预,可以自动化实现。 pxe优点: 1.规模…

Overall timing accuracy 和Edge placement accuracy 理解

在电子设计自动化(EDA)、集成电路(IC)制造和高速数字电路设计领域,"Overall Timing Accuracy" 和 "Edge Placement Accuracy" 是两个关键的性能指标,它们对于确保电路的功能正确性和性能至关重要。 当涉及到“Overall timing accuracy”(总体时序精度)…

最小相位系统

最小相位系统 1、传递函数 一个线性系统的响应。 比如一个RC低通滤波器: 交流分量在电容的充放电中被滤除掉,通过设置电容器的电容值,以及电阻值,能够控制这种滤除能力,这个参数为RC。 电容的电抗为 1 / j w C 1/j…

单片机+TN901非接触式红外测温设计

摘要 温度测量技术应用十分广泛,而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中,要求测量温度用的传感器不能与被测物体相接触,这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设计的…

C语言实战:贪吃蛇(万字详解)

💡目录 效果图 界面设计思路 1. 基本布局 2. 视觉元素 游戏机制设计 基本规则 游戏代码 前期准备 游戏代码详解 数据结构设计 宏定义 数据结构定义 函数原型(详见后文) 主函数代码 核心代码 Review 效果图 界面设计思路 1. 基…

转型AI产品经理(4):“认知负荷”如何应用在Chatbot产品

认知负荷理论主要探讨在学习过程中,人脑处理信息的有限容量以及如何优化信息的呈现方式以促进学习。认知负荷定律认为,学习者的工作记忆容量是有限的,而不同类型的认知任务会对工作记忆产生不同程度的负荷,从而影响学习效果。以下…

Python自学(适用于略有基础)

Python语法(基于C语言基础和简单Python基础) 参考学习资料:【你觉得自己这辈子都学不会编程?超超超基础Python课程,3小时快速入门 【自学Python教程合集】【3小时快速入门Python】】 https://www.bilibili.com/video/B…

Elasticsearch 认证模拟题 - 16

一、题目 创建一个搜索模版,要求 match_prase 查询,并且用指定的格式高亮,并排序 # 创建索引 PUT my_index {"settings": {"number_of_replicas": 0,"number_of_shards": 1},"mappings": {"p…

【SpringCloud学习笔记】Docker(上篇)

Docker 1. 前置准备 在学习Docker之前我们需要具备以下环境: Linux云服务器 / 虚拟机安装并配置Docker环境(命令行中输入docker -v能够显示对应版本证明安装成功) 2. 快速入门 要求: 我们先来尝试使用Docker创建MySQL服务&am…

如何离线下载 Microsoft Corporation II Windows Subsystem for Android

在本文中,我们将指导您通过一个便捷的步骤来离线下载 Microsoft Corporation II Windows Subsystem for Android。这个过程将利用第三方工具来生成直接下载链接,从而让您能够获取该应用程序的安装包,即使在没有访问Microsoft Store的情况下也…

ChatGLM2-6b的本地部署

** 大模型玩了一段时间了,一直没有记录,借假期记录下来 ** ChatGlm2介绍: chatglm2是清华大学发布的中英文双语对话模型,具备强大的问答和对话功能,拥有长达32K的上下文,可以输出比较长的文本。6b的训练参…

HTTP常见响应状态码

1xx:正在处理中 100 Continue:服务器确认收到了请求的第一部分,并告知客户端继续发送剩余的请求。 101 Switching Protocols:服务器根据客户端的请求,同意切换到另一个协议。 2xx:成功响应 200 OK&#…

pycharm使用pip安装依赖包报错 -----Microsoft Visual C++ 14.0 is required解决方法

pip安装第三方库的时候会报错:需要Microsoft Visual C14.0或更高版本。 报错原因 因为pip所安装的包需要使用C编译后才能够正常安装,但是当前安装环境中缺少完整的C编译环境,因此安装失败。 这样解决方案就很明确了,安装完整的C编…

【学习笔记】解决 VMware Workstation 17 Player 和主机之间无法复制粘贴的问题

【学习笔记】解决 VMware Workstation 17 Player 和主机之间无法复制粘贴的问题 使用VMware Workstation 17 Player,再上面安装 Ubuntu ,安装完之后,需要和主机之间进行复制粘贴。 首先安装了VMware Tools。 在打开的页面下把 VMwareTools…

c++【入门】正多边形每个内角的度数

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 根据多边形内角和定理,正多边形内角和等于:(n - 2)180(n大于等于3且n为整数)(如下图所示是三角形、四边形、五边形、六边形的形状&#xff09…

Stable Diffusion WebUI 各操作系统安装教程

最近几天在 2 台 Mac、2 台 PC、一台云无 GPU 的 Linux 安装了 Stable Diffusion WebUI,这里记录下如何安装,以及一些注意点和坑。 以下内容针对 Windows(N 卡)、MacOS(m 系列芯片)、Linux(Ubu…