Array详解(数组详解)
一,数组的概念
数组一般是由相同类型的元素组成的集合,是对象;
数组是值的有序集合,数组中的每个值称为一个元素,每个元素在数组中都有一个数字位置,称为索引,索引从 0 开始,依次递增。
定义
方式1,new 数组名 (参数,参数,...)
只有一个数字参数时是数组的长度(new可以省略,但一般尽量写上)
1 //定义一个空数组
2 var 数组名 = new Array();
3 //创建一个包含 10 个元素的数组,没有赋值
4 var 数组名 = new Array(10);
5 //创建一个数组有两个元素
6 var 数组名 = new Array("孙悟空",100);
1 var onelist = ['one',1,null,]; //定义一个数组 onelist
二,数组的属性
下标:表示数组的第 几个元素,从左往右数,从 0 开始也叫索引;
1 arr[ 0 ] : 表示数组的第 1 个元素 , 他是下标,从 0 开始也叫索引; 2 3 注意:下标可以是变量或表达式 4 5 let arr1 = [a,b,c,d]; 6 let number = arr1[0]; 7 console.log(number); 8 //打印数组中的第一个元素 a
长度:length属性,代表数组的长度,等于数组的元素个数。
1 var arr = [] //定义一个空数组 2 arr.length = 4; //可以将其长度改为4 3 console.log(arr); //输出 四个 空默认为实体类型 empty 打印的值仍是undefined
三,数组的方法
-
栈方法(添加,删除)
-
push():在数组最后添加一个元素,返回添加后数组的长度;
-
1 let arr = [1,2,3]; 2 let newArr = arr.push(4); 3 4 console.log(arr); 5 //打印:[1,2,3,4] 6 console.log(newArr ); 7 //打印:4 注意返回值为改变后数组长度
-
pop():删除数组最后一个,返回被删除的元素;
-
1 let arr = [1,2,3]; 2 let newArr = arr.pop(); 3 4 console.log(arr); 5 //打印:[1,2] 6 console.log(newArr ); 7 //打印:3 注意返回值为删除的数组元素
-
-
队列方法(添加,删除)
-
unshift():在数组最前面添加,返回添加后数组的长度;
-
1 let arr = [1,2,3]; 2 let newArr = arr.unshift(4); 3 4 console.log(arr); 5 //打印:[4,1,2,3] 6 console.log(newArr ); 7 //打印:4 注意返回值为改变后数组长度
-
shift():删除数组第一个,返回被删除的元素;
-
1 let arr = [1,2,3]; 2 let newArr = arr.shift(); 3 4 console.log(arr); 5 //打印:[2,3] 6 console.log(newArr ); 7 //打印:1 注意返回值为改变后数组长度
-
排序方法
-
sort():默认按 ASCII 码正序排列,两位或以上的数字会自动转换为string类型,只取第一位数。如 12 取 1 的 ASCII 码比较;
-
一般使用函数进行排序:
-
-
1 arr.sort(function(a,b){ 2 return a-b; //返回为 正 为正序 3 }) 4 arr.sort(function(a,b){ 5 return b-a; //返回为 负 为倒序 6 }
-
reserver():反转数组顺序,改变原有数组;没有参数;返回值为改变后的数组;
-
1 var arr = [1,2,3] 2 var arrResver = arr.reverser() 3 console.log(arrResver ); 4 //输出:[3,2,1] 5 6 //它的返回值和原数组指向的同一个地址 7 arr == arrResver //true 8 arr === arrResver //true
-
-
数组查询
-
indexOf():根据对应的值找下标,找的是值第一次出现的位置,返回它的下标;默认从下标 0 开始找,没有找到则返回 - 1;
-
1 let arr = [1,2,3]; 2 let number = arr.indexOf(3); 3 let int = arr.indexOf(4); 4 5 console.log(number); 6 //打印: 2 注意返回值为查找值的下标 7 8 console.log(int); 9 //打印: -1 注意没有找到则返回 -1
-
lastindexOf():跟indexOf() 一样,只不过从后往前开始找;
-
数组截取
-
slice():不修改原数组, 将原数组中的指定区域数据提取出来,返回的是一个新的数组;
- 两个参数:start:开始下标,end:结束下标; 包括开始下标的值,不包括结束下标的值;
-
1 let arr = [1,2,3]; 2 let newArr = arr.slice(1,2); 3 4 console.log(newArr); 5 //打印 [2] 截取原数组,返回一个新数组,不包括结束位置;
-
-
数组合并,连接
- concat():把
-
1 var arr1 = [1,2,3] 2 var arr2 = [4,5,6] 3 var newarr = arr1.concat(arr2) 4 console.log(newarr) //输出 [1,2,3,4,5,6]
- join():把数组
-
1 var arr1 = [1,2,3] 2 var newarr = arr1.join() //无分割符,默认原,号分割 3 var newarr1 = arr1.join("/") //以 / 为分割符 4 console.log(newarr) //输出 1,2,3 5 console.log(newarr1) //输出 1/2/3
-
数组增,删,改
-
splice():截取原数组中指定的数据, 会改变原数组;
- 删除:(开始下标 删除的个数)(个数可以被省略,就是删到最后)。
-
1 var arr = [1,2,3] 2 var newarr = arr.splice(0,1) 3 //返回 被删除元素组成的数组 4 5 console.log(newarr) //输出 [1] 6 console.log(arr) //输出 [2,3] 7 var arr1 = [1,2,3] 8 var newarr1 = arr.splice(0) 9 console.log(newarr1) //输出 [1,2,3] 10 console.log(arr1) //输出 []
-
插入:(开始下标,删除的个数,"新元素")插入元素到指定位置,将删除个数改为 0 ,不删除元素,直接插入新元素。
-
1 var arr = [1,2,3] 2 var newarr = arr.splice(0,0,4) 3 //返回 被删除元素组成的数组 4 5 console.log(newarr) //输出 [] 6 console.log(arr) //输出 [4,1,2,3] 7 var arr1 = [1,2,3] 8 var newarr1 = arr1.splice(1,0,4) 9 console.log(newarr1) //输出 [] 空数组 10 console.log(arr1) //输出 [1,4,2,3]
-
替换:将删除位置的数据替换,删除数据位置要输入新的值
-
1 let arr = [1,2,3] 2 let newarr = arr.splice(0,1,4) //返回 被删除元素组成的数组 3 console.log(newarr) //输出 [1] 4 console.log(arr) //输出 [4,2,3] 已删除并替换掉
-
遍历数组的方法
-
for of:遍历数据的每一个元素;
-
1 let arr = [1,3,2,4] 2 for(let v of arr){ 3 console.log(v); 4 //输出 :1,3,2,4; 5 }
-
ES5新增:高阶函数中常用的两个:forEach,map。
- forEach:
-
1 let arr = [1,2,3,4,5] 2 //value代表值,index代表下标,arr代表数组;都是形参可以改为任意字母; 3 arr.forEach(function(value,index,arr){ 4 console.log("值:" + value + ", 下标:" + index + ", 数组:" + array); 5 })
- map:遍历数组中的每一项,map的回调函数中支持return返回;
-
1 var arr = [1,2,3,4,5] 2 arr.map(function(value,index,arr){ 3 console.log("值:" + value + ", 下标:" + index + ", 数组:" + array); 4 })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)