JavaScript
三、数组数据类型Array
- 复杂数据类型,存储一堆数据
=> 不是按照键值对存储
=> 按照索引进行存储的(序号)
3.1 数组的创建
1. 字面量创建[ ]
//创建一个空数组
var arr = [];
创建的时候直接添加成员
=> 直接写在中括号中,多个数据使用逗号(,)隔开
// 字面量创建直接添加数据
var arr = ['hello','world','你好','世界'];
console.log(arr);
注:可以观察到数组也是有length属性的,也有索引,从0开始。
2. 内置构造函数Array()创建
创建的时候直接添加成员,分为3种情况:
1.不传递函数
=> 创建一个空数组
2.传递一个正整数
=> 这个参数表示数组的长度
3.传递多个数据
=> 每一个数据都是放在数组里面的数据
=> 没有表示长度的数据
// 1. 不传递函数,创建一个空数组
var arr = new Array();
console.log(arr);
// 2. 传递一个数字
var arr = new Array(100);
console.log(arr);
// 3. 传递多个数据
var arr = new Array(10, 20, 30);
console.log(arr);
3.2 数组的操作
+ 数组有一个 length 属性
=> 索引也是一个读写的属性
=> 读:获取数组的长度
=> 写:设置数组的长度
-> 当你设置的比本身长度小,那么就相当于截取
-> 当你设置的比本身长度大,那么多出来的就是用空补齐
var arr = ['你好','世界'];
// console.log(arr.length); // 2
// 相当于只保留第一个数据,剩下的删除
arr.length = 1;
console.log(arr);
// 把数组的长度强制设置成 100, 不够的用空补齐
arr.length = 100;
console.log(arr);
+ 数组的排列
=> 按照索引进行排列的
=> 索引:
-> 从 0 开始,依次 +1
-> 最后一位的索引,就是 length - 1
=> 索引也是一个读写的属性
=> 读:获取到指定索引位置的数据
-> 如果数组确实有这个索引位置,那么就是这个位置的数据
-> 如果数组没有这个索引位置,那么就是undefined
=> 写:设置指定索引位置的数据
-> 如果有这个索引位置,那就是给这个索引位置设置
-> 如果没有这个索引位置,就是添加
-> 如果这个数字超出length,那么中间的位置用空补齐
// 使用索引读取数组中的数据
console.log(arr[0]); //因为数组有[0]数据位置,所以得到的是'你好'
console.log(arr[99]); //没有,undefined
arr[1] = 'world';
arr[2] = '新来的';
arr[20] = '最后一个';
console.log(arr);
+ 数组的遍历
=> 因为数组是按照索引进行排列的
=> for 循环能给我们提供一组有规律的数字
=> 使用 for 循环遍历一个数组
+ 数组也是一个对象
=> 数组除了可以按照索引排列一些数据
=> 还可以当作对象使用,使用 点语法 存储一些数据
=> 你把数组当作对象使用,使用for循环来遍历的时候,他的成员是不占用 length 位置的
=> 你把数组当作对象使用,使用for in循环来遍历的时候
-> 里面的每一个索引位置,每一个 key 都会被遍历出来
=> 一般不会用它当作对象用
// 数组当作对象
// 当一个数组创建好后,他这个名字就可以当做对象使用存储数据
var arr = ['你好','世界'];
arr.age = 18;