讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議52:建議使用splice刪除數組 >

建議52:建議使用splice刪除數組

刪除數組元素的方法有多種,最簡單的方法是利用length屬性來截斷數組,但這種方法比較笨拙,僅能夠截斷尾部元素。在JavaScript中,由於數組其實就是對象,因此使用delete運算符可以從數組中移除元素。


var numbers=['zero','one','two','three','four','five','six','seven','eight','nine'];

delete numbers[2];//numbers=['zero','one',undefined,'three','four','five','six','seven','eight','nine'];


但是,使用這種方式刪除指定下標位置的元素後,會在數組中遺留一個空洞。這是因為排在被刪除元素之後的元素保留了它們最初的名字(下標位置),而我們通常想要的是遞減後面每個元素的名字(下標)。

幸運的是,JavaScript數組有一個splice方法,它可以刪除一些元素並將它們替換為其他的元素。splice方法的第一個參數是數組中的一個序號,第二個參數是要刪除的元素個數。任何額外的參數會在序號那個點的位置被插入數組中。例如:


var numbers=['zero','one','two','three','four','five','six','seven','eight','nine'];

numbers.splice(2,1);//numbers=['zero','one','three','four','five','six','seven','eight','nine'];


執行以上代碼之後,元素值為「three」的下標值從4變為3,同理,其後所有元素的下標值都遞減1。因為必須移除被刪除元素後面的每個元素,並且將一個新的鍵值重新插入,因此,這對於大型數組來說效率會更高。