数组也是一个对象
它和我们普通对象功能类似,也是用来存储一些值的
不同的是普通对象是使用字符串作为属性名的。
- 而数组是使用数字来作为索引操作元素
索引:
- 从 0 开始的整数就是索引
数组的存储性能比普通对象更好,在开发中我们经常使用数组来存储一些数据
使用typeof 检查一个数组,会返回 object
什么是数组
数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为 索引 。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。数组元素的索引不一定要连续,元素之间可以有空隙,叫做 稀疏数组 。每个数组都具有一个lengrh属性。针对非稀疏数组,length属性就是数组元素的个数,针对稀疏数组,元素的length属性比所有元素的索引要大。非稀疏是我们学习掌握的主要知识点。
创建一个数组
- 调用构造函数 Array() 创建数组
var arr = new Array();
向数组中添加元素
语法:
数组[索引] = 值
实例:
arr[0] = "孙悟空;
arr[1] = "哈哈";
读取数组中的元素
语法:
数组[索引]
实例:
console.log(arr[0]); // 孙悟空
如果读取不存在的索引,不会报错而是返回 undefined
console.log(arr[3]); // undefined
获取数组的长度
每个数组都有一个length属性,针对非稀疏数组,length属性值代表数组中元素的个数,其值比数组中最大的索引大一。当数组是稀疏时,length属性值会大于元素个数。数组的长度会大于每一个元素的索引值。
设置length属性为一个小于当前数组长度的非负整数n时,当前数组中的那些索引值大于等于n的元素将从数组中删除。同时可以将length属性设置为大于当前长度的值,实际不会像数组中添加元素,它只是在数组尾部创建一个空的区域。
使用 length 属性来获取数组的长度(元素的个数)
语法:
数组.length
实例:
var arr = new Array();
arr[0] = "孙悟空";
arr[1] = "猪八戒";
arr[2] = "唐僧";
console.log(arr.length); // 3
对于连续的数组,使用 length 可以获取到数组的长度(元素的个数)
对于非连续的数组,使用 length 会获取到数组的 最大索引+1
var arr = new Array();
arr[0] = "孙悟空";
arr[1] = "猪八戒";
arr[2] = "唐僧";
arr[50] = "沙和尚";
console.log(arr.length); // 51
:::info 尽量不要创建非连续的数组 :::
修改length
- 如果修改的 length 大于原长度,则多出部分会空出来
- 如果修改的 length 小于原长度,则多出的元素会被删除
向数组的最后添加元素
语法:
数组[数组.length] = 值;
实例:
var arr = new Array();
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[arr.length] = 4;
arr[arr.length] = 5;
console.log(arr.length); // 5