数组
数组的定义
- 定义:数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。
var arr = ['a', 'b', 'c'];
//构成一个数组,两端的方括号是数组的标志,a是0号位置,b是1号位置,c是2号位置
- 数组可以先定义再赋值
var arr = [];
arr[0] = 'a';
arr[1] = 'b';
arr[2] = 'c';
//数组的0号位置是a,1号位置是b ...
- 任何类型的数据,都可以放入数组。例如: 对象、数组、函数
- 数组的元素还是数组,就形成了多维数组。
var a = [[1, 2], [3, 4]];
a[0][1] // 2
//a的0号位置的1号位置是2
a[1][1] // 4
//a的1号位置的1号位置是4
数组的本质
- 本质上,数组属于一种特殊的对象,
typeof运算符会返回数组的类型是object。
typeof [1, 2, 3] // "object"
//typeof运算符认为数组的类型就是对象。
- 数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...)。
-
Object.keys方法可以返回数组的所有键名 -
JavaScript语言规定,对象的键名一律为字符串,所以,数组的键名其实也是字符串。之所以可以用数值读取,是因为非字符串的键名会被转为字符串。
length属性
- 数组的length属性返回数组的成员数量。
var arr = ['a', 'b'];
arr.length // 2
- 只要是数组,就一定有length属性.该属性是一个动态的值,等于键名中的最大整数加上1(因为是从0开始的)。
- 数组是一种动态的数据结构,可以随时增减数组的成员。
- 清空数组的一个有效方法,就是将length属性设为0。
in运算符
- 作用:检查某个键名是否存在。适用于对象,也适用于数组。
var arr = [ 'a', 'b', 'c' ];
2 in arr // true
'2' in arr // true
4 in arr // false
如果数组只有一个成员,那么其他位置的键名都会返回false。
数组的空位
- 定义:当数组的某个位置是空元素,即两个逗号之间没有任何值,称该数组存在空位。
var a = [1, , 1];
a.length // 3
- 数组的空位不影响
length属性。 - 数组的空位是可以读取的,返回
undefined。 - 使用
delete命令删除一个数组成员,会形成空位,并且不会影响length属性。
var a = [1, 2, 3];
delete a[1];
a[1] // undefined
a.length // 3