05-JavaScript数组
2019-04-08 本文已影响0人
七分之二十四
JavaScript数组
-
专门用于存储一组数据的,不是基本数据类型,是引用数据类型(对象类型)
-
创建数组
let 变量名称 = new Array(size);
-
操作数据
往数组中存储数据: 变量名称[索引号] = 需要存储的数据; 从数组中获取存储的数据: 变量名称[索引号];
-
数组注意点
- 和其它编程语言不同,如果数组对应的索引没有存储数据,默认存储的就是undefined,其他编程语言中默认保存的是垃圾数据或者0
- 和其它编程语言不同,JavaScript中访问了数组中不存在的索引不会报错,会返回undefined,其他编程语言一旦超出范围就会报错或者返回脏数据
- 和其他编程语言不同,当JavaScript中数组的存储空间不够时数组会自动扩容,其他编程语言中数组的大小是固定的
- 和其它编程语言不同,JavaScript的数组可以存储不同类型数据,其他编程语言中数组只能存储相同类型数据
- 和其它编程语言不同,JavaScript中数组分配的存储空间不一定是连续的,其他编程语言数组分配的存储空间都是连续,JavaScript数组采用"哈希映射"方式分配存储空间(好比字典可以通过偏旁部首找到对应汉字,我们可以通过索引找到对应空间)
- 在浏览器中各大浏览器也对数组分配存储空间进行了优化
- 如果存储的都是相同类型的数据,那么会尽量分配连续的存储空间
-
创建数组的其他方式
通过构造函数创建数组 let 变量名称 = new Array(size);创建一个指定大小数组 let 变量名称 = new Array();创建一个空数组 let 变量名称 = new Array(data1,data2,...);创建一个带数据的数组 通过字面量创建数组 let 变量名称 = [];创建一个空数组 let 变量名称 = [data1,data2,...];创建一个带数据的数组
数组遍历
-
数组的遍历就是依次取出数组中存储的所有数据,我们就称之为数组的遍历
for(let i = 0;i < arr.length;i++){ console.log(arr[i]); }
数组解构赋值
- 数组解构赋值是
ES6
新增的赋值方式 - 数组解构赋值注意点
- 在数组的解构赋值中,等号左边的格式必须和等号右边的格式一模一样,才能
完全结构
- 在数组的解构赋值中,左边的个数可以和右边的个数不一样
- 在数组的解构赋值中,右边的个数可以和左边的个数不一样
- 在数组的解构赋值中,如果右边的个数和左边的个数不一样,那么我们可以给左边指定默认值
- 在数组的解构赋值中,如果左边的个数和右边的个数一样,那么设置默认值会被覆盖
- 在数组的解构赋值中,还可以使用ES6中新增的扩展运算符
...
来打包剩余的数据,如果使用了扩展运算符,那么扩展运算符只能写在最后
- 在数组的解构赋值中,等号左边的格式必须和等号右边的格式一模一样,才能
数组增删改查
let arr = ["a", "b", "c"];
需求: 获取数组中索引为1的那个数据 (查)
console.log(arr[1]);
需求: 将索引为1的数据修改为m (改)
arr[1] = "m";
需求: 将索引为1的数据修改为d, 索引为2的修改为e (改)
arr.splice(1, 2, "d", "e");
参数1: 从什么位置开始
参数2: 需要替换多少个元素
参数3开始: 新的内容
需求: 要求在数组最后添加一条数据 (增)
arr.push("d");
push方法可以在数组的最后新增一条数据, 并且会将新增内容之后数组当前的长度返回给我们
需求: 要求在数组最后添加两条数据 (增)
arr.push("d", "e");
数组的push方法可以接收1个或多个参数
需求: 要求在数组最前面添加一条数据 (增)
arr.unshift("m");
unshift方法和push方法一样, 会将新增内容之后当前数组的长度返回给我们
需求: 要求在数组最前面添加两条数据 (增)
unshift方法和push方法一样, 可以接收1个或多个参数
需求: 要求删除数组最后一条数据 (删)
arr.pop();
数组的pop方法可以删除数组中的最后一条数据, 并且将删除的数据返回给我们
需求: 要求删除数组最前面一条数据 (删)
arr.shift();
数组的shift方法可以删除数组中的最前面一条数据, 并且将删除的数据返回给我们
需求: 要求删除数组中索引为1的数据 (删)
arr.splice(1, 1);
参数1: 从什么位置开始
参数2: 需要删除多少个元素
数组的常用方法
-
清空数组
arr = []; arr.length = 0; arr.splice(0, arr.length);
-
将数组转换为字符串
arr.toString();
-
将数组转换成指定格式字符串
arr.join(); 数组不能够使用加号进行拼接, 如果使用加号进行拼接会先转换成字符串再拼接 join方法默认情况下如果没有传递参数,就是调用toString join方法如果传递了参数,就会将传递的参数作为元素和元素的连接符号
-
将两个数组拼接为一个数组
arr1.concat(arr2); let res = [...arr1,...arr2]; 扩展运算符在解构赋值中(等号的左边)表示将剩余的数据打包成一个新的数组 扩展运算符在等号右边, 那么表示将数组中所有的数据解开, 放到所在的位置
-
对数组中的内容进行反转
arr.reverse(); 会修改原有数组
-
截取数组中指定范围内容
arr.slice(); slice方法是包头不包尾(包含起始位置,不包含结束位置)
-
查找元素在数组中的位置
arr.indexOf(参数1,参数2); arr.lastindexOf(参数1,参数2); 参数1: 需要查找的元素 参数2: 从什么位置开始查找 indexOf方法默认是从左至右的查找, 一旦找到就会立即停止查找 lastIndexOf方法默认是从右至左的查找, 一旦找到就会立即停止查找
-
判断数组中是否包含某个元素
arr.includes();根据返回true或者false来判断 还可以通过indexOf和lastIndexOf的结果, 判断是否是-1即可
二维数组
-
二维数组就是数组的每一个元素又是一个数组,称之为二维数组
-
操作二维数组
-
从二维数组中获取数据
- 数组名称[二维数组索引];得到一个一维数组
- 数组名称[二维数组索引][一维数组索引];得到一维数组中的元素
-
往二维数组中存储数据
- 数组名称[二维数组索引] = 一维数组;
- 数组名称[二维数组索引][一维数组索引] = 值;
-