目录
一维数组
创建数组:
-
通过构造函数创建数组
-
let 变量名称 = new Array(size); //创建一个指定大小的数组
-
let 变量名称 = new Array(); //创建一个空数组
-
let 变量名称 = new Array(data1,data2,……); //创建一个带数据的数组
-
-
通过字面量创建数组
-
let 变量名称 = []; //创建一个空数组
-
let 变量名称 = [data1,data2,……]; //创建一个带数据的数组
-
向数组中存储数据:变量名称[索引号] = 需要存储的数据;
从数组中获取数据:变量名称[索引号] ;
注意点:
①如果数组对应的索引中没有存储数据,默认存储的就是undefined
②访问数组不存在的索引不会报错,会返回undefined
例:let arr = new Array(3);
console.log(arr[666]); //undefined
③和其他编程语言不同,JavaScript中数组存储空间不够时会自动扩容
④和其他编程语言不同,JavaScript中数组可以存储不同数据类型
解构赋值
let arr = [1,3,5];
let [a,b,c] = arr; // a = 1, b = 3, c = 5(遍历数组并将值赋给abc)
注意点:
①等号左边的格式必须和等号右边的格式一模一样,才能够完全解构
例:let [a,b,c] = [1,3,[5,7]]; //错误写法
let [a,b,[c,d]] = [1,3,[5,7]]; //正确写法
②左边的个数可以比右边少
例:let [a,b] = [1,3,5]; //a = 1, b = 3
③右边的个数可以比左边少,且此时可以给左边指定默认值,若不指定默认值,则为undefined
例:let [a,b,c] = [1]; //a = 1
let [a,b=666,c=888] = [1]; //a = 1,b = 666,c = 888
let [a,b,c] = [1]; //a = 1,b = undefined,c = undefined
④如果左边的个数和右边个数不一样,则左边设置的默认值会被覆盖
例:let [a,b=666,c=888] = [1,3,5]; //a = 1, b = 3, c = 5
let [a,b=666] = [1,3,5]; //a = 1, b = 3
-
在数组的解构赋值中,若左边的个数比右边少,还可以使 扩展运算符 来打包剩余的数据(将剩余数据打包为一个数组赋给左边最后一个数)
扩展运算符:...
例:let [a,b] = [1,3,5];
let [a,...b] = [1,3,5]; //a = 1, b = [3,5]
注意点:扩展运算符只能写在最后
增删改查
let arr = ("a" , "b" , "c");
查:console.log(arr[1]); // b
改:arr[1] = "修改后的内容";
arr [1] = "d"; arr[2] = “e”; //将索引为1的数据改为d,将索引为2的数据改为e
arr.splice(1,2,"d","e"); //修改索引为1的后边的2个数据为d和e
参数1:从什么位置开始
参数2:需要替换多少个元素
参数3:新的内容
增:
1. 在数组最后添加一条数据
①arr[3] = "d";
②arr.push("d"); //push方法可以在数组最后新增一条数据,并且会将新增内容之后的数组长度返回至控制台
2. 在数组最后添加两条数据
①arr.push("d");
arr.push("e");
②arr.push("d","e"); //数组的push方法可以接受一个或多个参数
3. 在数组最前面添加一条数据
arr.unshift("新增的内容"); //与push方法一样,会将新增内容之后的数组长度返回至控制台
4. 在数组最前面添加两条数据
①arr.unshift("d");
arr.unshift("e");
②arr.unshift("m","w"); //与push方法一样,可以接受一个或多个参数
删:
1. 删除数组最后一条数据
arr.pop(); //pop方法可以在数组最后删除一条数据,并且会将删除内容之后的数组长度返回至控制台
例:let res = arr.pop(); // res = 删除内容之后的数组长度
2. 删除数组最前面的一条数据
arr.shift(); //shift方法可以在数组最前面删除一条数据,并且会将删除内容之后的数组长度返回至控制台
例:let res = arr.shift(); // res = 删除内容之后的数组长度
3. 删除数组中索引为1的数据
arr.splice(1,1); //从索引为1的元素开始删除1条数据(即删除索引为1的数据)
常用操作
let arr = [1,2,3,4,5];
-
清空数组
-
arr = [];
-
arr.length = 0;
-
arr.splice(0,arr.length);
-
-
将数组转换为字符串
let str = arr.toString();
-
将数组转换为指定格式字符串
arr.join(); //join方法默认情况下如果没有传递参数,就是调用to.String();
注意点:join方法如果传递了参数,就会将传递的参数作为参数和参数之间的连接符号
例:let str = arr.join("+"); // 1+2+3+4+5
-
将两个数组拼接成一个数组
let arr1 = [1,3,5];
let arr2 = [2,4,6];
-
let res = arr1.concat(arr2);
-
let res = [...arr1,...arr2]; // let res = [1,3,5,2,4,6];
注意点:①扩展运算符在解构赋值中(等号的左边)表示将剩余数据打包成一个新的数组
②扩展运算符在等号右边,表示将数组中所有的数据解开,放到所在的位置
③不会修改原有数组,会生成一个新的数组返回至控制台
注意点:数组不能使用加号进行拼接,如果使用加号进行拼接会先转换为字符串再拼接
例:let res = arr1 + arr2; // 1,3,52,4,6
-
-
对数组中的内容进行反转
let res = arr.reverse(); // res = [5,4,3,2,1]
注意点:会修改原有数组
-
截取数组中指定范围内容
let res = arr.slice(1,3); // res = [2,3]
注意点:slice方法是包头不包尾(包含起始位置,不包含结束位置)
-
查找元素在数组中的位置
-
let res = arr.indexOf(3); // 2
注意点:①index方法如果找到了指定元素,就会返回元素对应的位置
②如果没有找到指定元素,就会返回 -1
③index方法默认是从左到右查找,一旦找到就会立即停止查找,即使后边存在相同元素也查不出来后边相同元素的位置
-
let res = arr.indexOf(4,1); // 3(从索引为1的元素开始查找元素4的位置)
参数一:需要查找的元素
参数二:从什么位置开始
-
let res = arr.lastIndexOf(3); // 2 (从后往前查找元素3的位置)
-
let res = arr.laseIndexOf(3,4) // 2 (从后往前且从索引为4的元素开始查找元素3的位置)
-
-
判断数组中是否包含某个元素
-
通过indexOf和lastIndexOf的结果,判断是否是 -1即可
let res = arr.indexOf(8); // -1 (即数组arr中没有元素8)
let res = arr.lastIndexOf(4); // 3 (即数组arr中有元素4,且索引为3)
-
通过 includes() 方法判断
let res = arr.includes(8); // false
let res = arr.includes(4); // true
-
-
字符串的 split 方法
根据传入参数切割字符串,转换成一个数组之后返回至控制台
例:let str = prompt("请输入三个整数,用逗号隔开"); //分别输入1,3,5
let arr = str.split(",");
console.log(arr); // ["1","3","5"]
-
判断是否为数组的方法
-
instanceof
例:let res = [ ]; // 数组
let obj = { }; // 对象
console.log(res instanceof Array); // true
console.log(obj instanceof Array); // false
-
Array.isArray(参数)
例:let res = [ ]; // 数组
let obj = { }; // 对象
console.log(Array.isArray(res)); // true
console.log(Array.isArray(obj)); // false
-
二维数组
定义:let arr = [[],[],[]];
注意点:在定义二维数组的时候,将来要存储多少个一维数组,就写多少个[]