var arr=['a','b','c'];
若要刪除其中的'b',有兩種方法:
1.delete方法:delete arr[1]
這種方式數組長度不變,此時arr[1]變成undefined了,但是也有好處原來數組的索引也保持不變,此時要遍歷數組元素可以才用
* 該方式IE4.o以後都支持了
2.陣列物件splice方法:arr.splice(1,1);
這種方式數組長度會相應改變,但是原來的數組索引也相應改變
splice參數中第一個1,是刪除的起始索引(從0算起),在此是數組第二個元素
第二個1,是刪除元素的個數,在此只刪除一個元素,即'b';
此時遍歷數組元素可以用普通遍歷數組的方式,比如for,因為刪除的元素在數組中並不保留
* 此方法IE5.5以後才支援
值得一提的是splice方法在刪除陣列元素的同時,還可以新增入數組元素
例如arr.splice(1,1,'d','e'),d,e兩個元素就被加入陣列arr了
結果陣列變成arr:'a','d','e','c'
JavaScript透過設定數組的length屬性來截斷數組是惟一一種縮短數組長度的方法.如果使用delete運算子來刪除數組中元素,雖然那個元素變成未定義的,但是數組的length屬性並不改變兩種刪除元素,陣列長度也改變的方法.
//常用的是經由遍歷,重構數組.
Array.prototype.remove=function(dx)
{
if(isNaN(dx)||dx>this.length){return false;}
for(var i=0,nturnf =0;i
if(this[i]!=this[dx])
{ 〜 〜 〜 〟〜 〟〜〜 〜 〜 〝〝〝〟〟〟] }
}
this.length-=1
}
a = ['1','2','3','4','5'];
alert( "elements: " a "nLength: " a.length);
a.remove(0); //刪除下標為0的元素
alert("elements: " a "nLength: " a.length );
事實上,我們可以自己為數組增加一個刪除方法(注意,這裡指的是將數組的某一項真正的從數組成員中移除)。或許你會想到用循環來為陣列重新賦值,這樣做當然可以,但效率很低。
下面我們介紹利用Array物件的兩個方法slice、concat來自訂刪除陣列的方法。
具體程式碼如下,請注意裡面的註解。