2012-08-06 48 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

如果||的左侧是真值,它将返回左侧。否则它会返回右侧。