天天看點

JS程式設計建議——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方法的第一個參數是數組中的一個序号,第二個參數是要删除的元素個數。任何額外的參數會在序号那個點的位置被插入數組中。例如:

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

執行以上代碼之後,元素值為“three”的下标值從4變為3,同理,其後所有元素的下标值都遞減1。因為必須移除被删除元素後面的每個元素,并且将一個新的鍵值重新插入,是以,這對于大型數組來說效率會更高。

繼續閱讀