创建数组的几种方式,最全面
//第一种 字面量创建 var arr1=[1,23,4]; //第二种 new Array() 这是一个构造函数创建方式 var arr2=new Array(1,223,34); //第三种 Array 也是构造函数方式创建 var arr3=Array(23,21,333); //第四种 Array.of() var arr4= Array.of(2,34,2); //第五种 Array(数量).fill(value) var arr5= Array(4).fill(1,233,34,4)
数组方式创建的区别
// new Array() 这是一个构造函数创建方式 var arr2=new Array(1,223,34); // Array 也是构造函数方式创建 var arr3=Array(23,21,333); // Array.of() var arr4= Array.of(2,34,2); // Array(数量).fill(value) var arr5= Array(4).fill(1,233,34,4) 通过构造函数方式创建数组,需要确保Array前面没有被更改还有重新定义 new Array() Array() 这二种方式如果只传一个值,就是数组的长度,值为空 var ar1=new Array(9); //值为空,长度为9的空数组 Array.of() [] 这俩种方式虽然一个是构造函数创建方式一个是字面量创建方式 但是传一个值就是创建一个值的数组元素 var ar2 =Array.of(1) var ar3 =[3] 是创建一个值的数组
**注意:**工作中常用的还是字面量创建,因为比较优美,而且还不需要像Array创建的时候还要查看之前是否重新定义以及被更改。
访问数组的方式
通过数组的下标可以进行访问,数组的下标是从零开始的,到数组最大的长度减一,因为数组是从零开始的,但是长度确实从1开始的
var arr=[1,2,3];、 // 0 1 2 //获取数组长度 length方法 console.log(arr.length) //获取数组中的2 console.log(arr[1]) //因为数组是从零开始的,到达2的时候正好为1 //如果访问超过数组长度的元素 console.log(arr[76]) //因为数组里没有所以返回undefiend
数组添加元素
var arr=[1,343,54,6,5,23,43,2,342]; //如果数组索引下标为3有值的话则会被覆盖掉 arr[3]=45; //如果数组长度大于当前长度,则会增加到该长度,中间没有值的都为空 empty是空的意思 如果访问则是undefined arrp[98]=1; //也可以通过length的方式就行追加
数组删除元素
var ayy1=[12,342,3,2,32,2] //可以通过length进行删减 arr.length=5;
数组遍历
//采用for循环进行遍历 var arr=[121,34,3,232,23,2] for(let i=0;i<arr.length;i++){ console.log(arr[i]) } //for..of循环 ele 代表循环出来的每一项 arr代表数组名字 for(let ele of arr){ console.log(ele) } //forEach arr.forEach((数组每一个元素,索引, 数组本身)=>{})
红色预警好好学这里,重点重点重点 数组的栈模式
//栈是一种后入先出的数据结构,就是说最后一个放进去的元素,是第一个被拿出来的 //JavaScript数组原生支持栈的模式 //定义一个栈,也是字面量创建数组 var arr=[1,23,34] //入栈,往arr后面添加数组,也可以添加多个,入栈也可以说是添加 arr.push(4) //出栈 从栈里面删除他并且返回删除的值,删除最后一个值并返回,可以使用变量接受,也可以不用 arr.pop() //peek操作 //就是通过length长度进行操作
红色预警: 先入先出的数据结构
var var arr=[5,23,34] //入队 arr.push(2,34,34,4) //出队 删除第一个元素 返回删除的数组,原数组改变 let ar1=arr.shift() //头部插入元素unshift() arr.unshift(12,3,2)
数组方法
//反转数组 reverse() var arr=[322,2134,3] arr.reverse() //返回修改后的数组且改变原数组 //也可以用来分隔字符串 如果split不传参数则进行分隔字符串变成一个数组join是字符串拼接的方法,分隔每个字符串使用 console.log('hello',split().reverse().join())
数组排序
var arr=[1,2,34,3,45,45,1]; //升序排列 arr.sort() a是数组前一个元素,b是后一个元素 降序排列 arr.sort((a,b)=>{ if(a>b){ return -1; }else if(a<b){ return 1; }else{ return 0; } }) arr.sort((a,b)=>b-a)
数组链接
var arr1=[1,2,34,56,45,34]; var arr2=[231,2132,12]; //可以传多个数组,进行合并 arr1.concat(arr2)
数组裁切,返回数组的一部分
slice(a,b)方法,从a位置截取到b位置停止,不包含b位置,返回截取的字符串
map方法
map()方法不会改变原数组可以return出去而forEach不行 var arr1=[12,323,34,321,12,332] //返回新数组 var aww=arr1.map(ele=>ele*2)
reduce方法 累加器
var arr=[1,23,43,3423,321,232] var res=arr.reduce((tol,curre)=>tol+curre,0) //第一个是数组中第一个二个参数,第二个参数是初始值,如果不给初始值的情况下,默认是数组中第一个和第二个参数开始相加,给了初始值,就从初始值进行相加
数组过滤,筛选数组中的值 filter
var arr=[12,324,3,44,5,4565] 过滤大于13的值,如果大于13则为true 存储在新数组中 var filte=arr.filter(item=>item>13)
数组检测 every()
俩种方式:检测是否符合某种条件,如果符合就返回true,不符合就返回false 检测是否包含某个参数,如果符合就返回true,不符合就返回false var arr=[12,23,43,45,45,56,65,6,12] var res=arr.every(item=> item>0); 所有大于0返回true,判断所有元素 //some判断单个元素 var arr1=arr.some(item=>item>5) //如果有一项大于5就返回true
结构操作符:把数组的值赋值给变量
var arr=[123,454,23,23123,23] var [a,b,c,d]=arr;
rest操作符 ,三个点 … 剩余参数的意思
多维数组
let arr=[1,23,[12,2]]