《javascript精粹》读书笔记 – 数组
1. 数组length属性的值是这个数组的最大整数属性名加上1.它不一定等于数组里属性的个数:
[js]
var myArray = [];
alert(myArray.length); // 0
myArray[1000000] = true;
alert(myArray.length); //1000001
[/js]
2. 在数组尾部添加一个新元素:
[js]
var numbers = ['zero', 'one', 'two'];
numbers[numbers.length] = ‘three’;
numbers.push(‘four’);
[/js]
3. 删除数组元素。
js中的数组实际上就是对象,所以delete运算符就可以用来从数组中移除元素:
[js]
var numbers = ['one', 'two', 'three', 'four'];
delete numbers[2]; // ['one', 'two', undefined, 'four']
[/js]
不幸的是,那样会在数组中遗留一个空洞。 通常可以使用splice方法来删除元素:
[js]
var numbers = ['one', 'two', 'three', 'four'];
numbers.splice(2, 1); //['one', 'two', 'four']
[/js]
这个对大型数组来说可能会效率不高。
4. 当属性名是小而连续的整数时,应该使用数组;否则使用对象。
5. 判断是否是数组:
[js]
var is_array = function(value){
return value &&
typeof value === ‘object’ &&
value.constructor === Array;
};
[/js]
不幸的是,它在识别从不同的窗口(window)或帧(frame)里构造的数组时会失败。完整的测试方法如下:
[js]
var is_array = function(value){
return value &&
typeof value === ‘object’ &&
typeof value.length === ‘number’ &&
typeof value.splice === ‘function’ &&
!(value.propertyIsEnumberable(‘length’));
};
[/js]