注意点:
1.数组是引用类型
2.数组对应的索引没有存储数据,默认存储的就是undefined
3.和其他编程语言不同,数组中不存在的索引不会报错,会返回undefined
4.和其他编程语言不同,JavaScript数组存储空间不够时数组会自动扩容
5.和其他编程语言不同,JavaScript的数组可以存储不同类型的数据
6.和其他编程语言不同,JavaScript中数组分配的存储空间不一定是连续的。
7.创建数组的方式
7.1.通过构造函数创建数组
let 变量名称=new Array(size); //创建一个指定大小数组
let 变量名称=new Array();
let 变量名称=new Array('zs','ls','ww');
7.2.通过字面量创建数组
let 变量名称=[];
let 变量名称=['zs','ls','ww'];
数组解构赋值
什么是数组的解构赋值?
解构赋值是ES6中新增的一种方式
例如:
let arr=[1,3,5];
let [a,b,c]=arry
console.log('a ='+a); 输出 a =1
console.log('b ='+b); 输出 b =3
console.log('c ='+c); 输出 c =5
注意点:
1.在数组的解构赋值中,等号左边的格式必须和符号右边的格式一模一样,才能够完全解构。
例如:
let [a,b,[c,d]]=[1,3,[2,4]]
console.log('a ='+a); 输出 a =1
console.log('b ='+b); 输出 b =3
console.log('c ='+c); 输出 c =2
console.log('d ='+d); 输出 d =4
2.在数组的解构赋值中,左边的个数可以和右边的个数不一样
3.在数组的解构赋值中,右边的个数可以和左边的个数不一样,那么我们可以给左边指定默认值
例如:
let [a,b=2,c]=[1]
console.log('a ='+a); 输出 a =1
console.log('b ='+b); 输出 b =2
console.log('c ='+c); 输出 c =undefined
4.在数组的解构赋值中,右边的个数可以和左边的个数不一样,那么如果设置默认值会被覆盖
5.在数组的解构赋值中,还可以使用ES6中新增的扩展运算符来打包剩余的数据。(ES6新增的扩展运算符: ...)如有使用了扩展运算符,那么扩展运算符只能写在最后
例如:
let [a,...b]=[1,3,5]
console.log('a ='+a); 输出 a =1
console.log(b); 输出 3,5
数组的增删改查
let arr=['a','b','c'];
//需求: 将索引为1的数据修改为d,索引为2的数据修改为e(改);
1. arr[1]='d';arr[2]='e';
2. arr.splice(1,2,'d','e'); (参数1:从什么位置开始, 参数2:需要替换多少个元素, 参数3开始:新的内容)
console.log(arr); 输出:['a','d','e']
//需求:在数组最后添加一条数据(增);
let res=arr.push('d'); //会返回当前数组的长度
let res=arr.push('d','e') //push方法可以接收一个或多个参数;
//需求:在数组最前面添加一条数据(增);
let res=arr.unshift('m'); //会返回当前数组的长度
let res=arr.unshift('w',m'); //unshift方法可以接收一个或多个参数;
//需求:删除数组的最后一条数据
let res=arr.pop();//删除数组中最后一条数据,并且将删除的数据返回出来
//需求:删除数组的开始一条数据
let res=arr.shift();//删除数组最前面一条数据,并且将删除的数据返回出来
//需求:删除索引为1的数据
arr.splice(1,1);// 从索引为1元素开始删除1条数据。参数1:索引位置, 参数2:需要删除多少个元素
数组的常用方法
let arr=[1,2,3];
//1.清空数组
1.arr = [];
2.arr.length=0
3.arr.splice(0,arr.length)
//2.将数组转换字符串
arr.toString();
//3.将数组转换指定格式的是字符串
arr.join(); // d默认情况下如果没有传参数,跟toString()一样
arr.join('+'); 1+2+3
//4.两个数组拼接为一个数组
let arr1=[1,3,5];let arr2=[2,4,6]
let res=arr1.concat(arr2); //注意点:不会改变原来的数组,会新生成一个数组
console.log(res); //[1,3,5,2,4,6]
let res=[...arr1,...arr2]; //注意点:扩展运算符在等号的右边,那么表示将数组中所有的数据解开,放在所在的位置
console.log(res); //[1,3,5,2,4,6]
// 5.如何将数组中的内容进行反转
let res=arr.reverse(); //注意点:会修改原来的数组
console.log(arr); //[3,2,1]
console.log(res); //[3,2,1]
//6.如何截取数组中指定范围内容
let arr1=[1,2,3,4,5];
let res=arr1.slice(1,3); //注意点:slice方法包含起始位置,不包含结束位置
console.log(res); // [2,3]
console.log(arr1); // [1,2,3,4,5]
//7.如何查找元素在数组中的位置
let res=arr.indexOf(2);//注意点:indexOf方法从左至右的查找,一旦查找到就会立即停止查找。indexO方法没有找到指定元素就会返回-1,否则返回该元素的索引。
let res=arr.lastIndexOf(2);
//8.如何判断数组中包含某个元素
//除了indexOf、lastIndexOf外还可以使用include
let res=arr.includes(8);
console.log(res); // false
数组的练习
1. 获取数组中的最大值
let arr=[3,5,6,8,12,2,1];
let max=arr[0];
for(let i=1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
console.log(max); //12