2012-08-06 47 views
1

我發現t his function on the john resig blog用於從陣列中刪除元素。它工作得很好!但我真的不知道如何..瞭解陣列刪除功能

// Array Remove - By John Resig (MIT Licensed) 
Array.prototype.remove = function(from, to) { 
    var rest = this.slice((to || from) + 1 || this.length); 
    this.length = from < 0 ? this.length + from : from; 
    return this.push.apply(this, rest); 
}; 

我感到困惑的是與這一說法發生的事情:(to || from) + 1 || this.length)對於初學者;也許一旦我明白了,其餘的就會變得更加清晰。任何幫助明確發生在這裏的事情是非常感謝。謝謝。

+0

一旦您瞭解了函數的行爲方式,就不難看出發生了什麼。該行後面的邏輯在文章底部解釋,順便說一句.. – 2012-08-06 15:15:09

+0

爲什麼不使用'.splice'來代替? – Ryan 2012-08-06 15:21:20

+0

@TimDown你能否提出另一個相同的功能,但也許會使它更清晰? – 1252748 2012-08-06 15:21:48

回答

1

第一部分在切片之後獲取數組的其餘部分。如果你指定一個to,它的一切都在to之後;否則,slice之後的所有內容都將在from之後。如果其中任何一個是-1,它會得到一個空片。

下一部分將數組截斷到移除的開始位置之前。

最後一部分在數組末尾重新插入rest(要移除的範圍之後的部分)。

+0

好作業〜!!!!!! – 2012-08-06 15:21:05

0

如果||的左側是真值,它將返回左側。否則它會返回右側。