前言
JavaScript中没有数组。JavaScript提供一种拥有一些类数组(array-like)特性的对象。把数组的下标变成字符串,作为对象的属性。
1、数组字面量
一个数组字面量是在一对方括号中包围零个或多个用逗号分隔的值的表达式。数组的第一个值将获得属性名‘0’,第二个值获得属性名‘1’,以此类推。
数组的原型与对象原型的区别,数组原型继承了大量有用的方法。
JavaScript允许数组包含任意混合类型的值。
2、长度
JavaScript数组的length没有上界。length属性的值是这个数组最大整数属性名加1,不一定等于数组里属性的个数。
可以直接设置length的值,设置更大的length,多出来的值会自动设置为undefined,设置更小的length,会将大于等于新length的属性删除。
var myArray = [];
myArray.length; // 0
myArray[100000] = true;
myArray.length; // 100000
3、删除
数组其实是对象,可以使用 delete 运算符移除元素,移除后的位置元素变为 undefined 。
数组的删除方法 splice ,删除元素后,后面的元素自动补齐。对于大型数组效率较低。
4、枚举
数组其实是对象,可以用 for in 遍历数组的所有属性,但 for in 不能保证属性的顺序,因此不推荐使用。
推荐使用 for 来遍历数组,可以按顺序遍历数组的属性。
5、容易混淆的地方
什么时候使用数组?什么时候使用对象?答:当属性名是小而连续的整数时,使用数组。否则,使用对象。
type of 不能识别数组,识别数组的方法:
var is_array = function (value) {
return Object.prototype.toString.apply(value) === '[object Array]';
}
6、方法
可以给数组的原型 Array.prototype 增加一个方法,对所有数组可用。也可以直接给数组添加一个方法,如果增加的方法名不是一个整数,就不会改变数组的length值。
7、指定初始值
JavaScript 数组通常不会预先设定值,因此 [ ] 得到一个新数组是空的,访问一个不存在的元素会得到 undefined。