数组
功能:一个标识符存储多个数据
声明数组:
-字面量声明:let arr = [];
-构造函数声明:let arr = new Array();
使用数组中的值:arr[0]
数组中的每个值,都会有对应的一个下标(索引),可以通过下标,获取数组当中的值,下标的起始值是0,数组中第一个值下标为0,第二个值为1,以此类推。
注:获取数组不存在值的下标,会得到undefined
【扩展】
字面量和构造函数的区别:字面量的解析效率比构造函数高,原因:字面量属于JSON格式,可以直接被JS解析。构造函数需要先调用构造函数,在进行JS引擎解析。
数组的适用场景
-解构:把引用数据类型,分解成基本数据类型
let i = 1 ;
let j = 2 ;
[i, j] = [j, i];
console.log(i, j);//2 1
注:解构的左右数据类型需要一致
-批量赋值
let [a, b, c] = [1, 2, 3];
console.log(a, b, c);//1 2 3
数组的遍历
获取数组的所有值:for(let item of arr)
获取数组的所有的下标:for(let index in arr)
数组的属性:
数组的长度:arr.length
返回数组内容的个数
数组的方法:
arr.push()
:数组后面添加数据
arr.unshift()
:数组前面添加数据
arr.pop()
:从数组后面删除数据(一次只能删一个)
arr.shift()
:从数组前面删除数据(一次只能删一个)
arr.includes()
:查找数组里的内容,存在返回true,不存在返回false
arr.indexOf()
:查找数组里的内容,存在返回值的下标,不存在返回-1(只查找第一个)
arr.lastIndexOf()
:查找数组里的内容,存在返回值的下标,不存在返回-1(查找后一个)
注:数组中有NaN时,includes可以找到并返回为true,但indexOf找不到,只能返回-1
arr.slice(参数1,参数2)
:批量获取数组内容
获取的范围从参数1下标开始到参数2结束,但不包含参数2的内容
如果参数2是负数,会用数组的长度与其相加;
若没有满足范围的值,返回数组空;
若参数只有1个,则获取从下标这个参数到数组的最后一个值。
slice方法不会改变原数组
arr.splice(参数1,参数2,参数3)
(会改变原数组)修改数组
一个参数:从这个参数的下标截取到最后一个
两个参数:从第一个参数开始,截取参数2的个数的值(第1个参数,起始下标;第2个参数,截取个数)
三个参数:第1个参数,起始下标;第2个参数,截取个数;第3个参数及第3个参数以后,都是插入或修改的值
arr.join()
:数组转字符串,以括号里的内容进行分割
str.split()
:字符串转数组,以括号里的内容进行分割
-扩展运算符:...
字符串转数组:arr = [...str];
数组拼接:
let arr1 = [1, 2, 3];
let arr2 = ["a", "b", "c"];
let arr3 = [...arr1, ...arr2];
console.log(arr3);//[1, 2, 3, "a", "b", "c"]
【扩展知识】
多维数组,JS没有多维数组,但是JS是弱类型语言,数组可以存数组,变相的实现了多维数组的功能