友情链接:
一、数组的长度
1).每个数组都有一个length属性:征对稠密数组,length属性值代表了元素中的个数,其值比数组中的最大索引数大1,当数组是稀疏的时,length的值大于元素的个数。数组长度保证大于它的每个元素的索引值。
2).数组有两个特殊行为:
第一个:如果为一个数组元素赋值,它的索引i大于或等于现有的数组的长度时,length的值将设置为i+1。
第二个:设置length属性为一个小于当前长度的非负整数n时,当前数组中的那些索引值大于或等于n的元素将从中删除。
var a = [1, 2, 3, 4, 5]; //从5个元素的数组开始 a.length = 3; //现在a为 [1, 2, 3] a.length = 0; //删除所有的元素a为[] a.length = 5; //长度为5,但是没有元素,就行new Array(5)
(注:还可以将数组的length属性值设置为大于当前的长度。实际上不会向数组中添加新的元素,它只是在的尾部创建一个空的区域)
3).在ECMAScript5中,可以使用Object.defineProperty()将数组的属性变成只读的:
var a = [1, 2, 3]; Object.defineProperty(a, "length", {writable: false}); a.length = 0; console.log(a);//=> [1, 2, 3]
(注:类似的,如果让一个数组元素不能配置,就不能删除它。如果不能删除它,length的属性不能设置小于不可配置元素的索引值(见Object.seal()和Object.freeze()方法))。
二、数组元素的添加和删除
1.添加:
1).为新索引赋值
2).使用push()方法在数组的末尾增加一个或多个元素;
3).使用unshift()方法给首部插入一个元素,并且将其他元素移动到更高的索引处.
1). a = []; //开始是一个空数组 a[0] = "zero"; //想其中添加元素 a[1] = "one"; a;//=> ["zero", "one"]
2).
a = []; //开始是空数组
a.push("zero"); //在末尾添加一个元素。 a = ["zero"]
a.push("one","two");//再添加两个元素
a;//=>["zero", "one", "two"]
a.unshift("start");
a;//=> ["start", "zero", "one", "two"];
2.删除:
var arr = [0,1,2]; delete arr[1]; console.log(arr[1]); //undefined console.log(arr.length); //3:delete操作并不影响数组的长度
(注:删除数组元素与为其赋值undefined值是类似的(但有一些微妙的区别)。对一个数组元素使用delete不会修改数组的length属性;也不会将元素从高索引处移下来填充已经删除的元素空白。如果从一个数组中删除一个元素,它就变成稀疏数组。)