友情鏈接:
一、數組的長度
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屬性;也不會將元素從高索引處移下來填充已經刪除的元素空白。如果從一個數組中刪除一個元素,它就變成稀疏數組。)