Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 理解数组删除函数_Javascript - Fatal编程技术网

Javascript 理解数组删除函数

Javascript 理解数组删除函数,javascript,Javascript,我找到了从数组中删除元素的t。它真的很好用!但我真的不明白怎么 // 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; re

我找到了从数组中删除元素的t。它真的很好用!但我真的不明白怎么

// 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);
};
//数组删除-由John Resig(麻省理工学院授权)
Array.prototype.remove=函数(从,到){
var rest=this.slice((to | | from)+1 | | this.length);
this.length=from<0?this.length+from:from;
返回此。推。应用(此,其余);
};

我对这句话感到困惑:
(to | | from)+1 | | this.length)
,对于初学者;也许一旦我明白了这一点,剩下的事情就会变得更加清楚。非常感谢您的帮助,让我们知道这里发生了什么。谢谢。

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

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

第一部分将获得数组的其余部分,在切片之后。如果将
指定为
,则它将
切片
指定为
之后的所有内容;否则,它将
slice
s
from
之后的所有内容。如果其中任何一个是
-1
,它将获得一个空切片

下一部分在移除的开始位置之前向右截断数组


最后一部分在数组末尾重新插入
rest
(要删除的范围之后的部分)。

第一部分在切片之后获取数组的其余部分。如果将
指定为
,则它将
切片
指定为
之后的所有内容;否则,它将
slice
s
from
之后的所有内容。如果其中任何一个是
-1
,它将获得一个空切片

下一部分在移除的开始位置之前向右截断数组


最后一部分在数组的末尾重新插入
rest
(要删除的范围后的部分)。

一旦您了解了函数的行为,就不难看出发生了什么。顺便说一句,这句话背后的逻辑在文章的底部解释了。为什么不改用
.splice
呢?@TimDown你能推荐另一个功能来做同样的事情,但可能会让它更清楚吗?@minitech用什么方式?谢谢。@thomas:
Array#splice(开始,长度)
做的事情也差不多。也可以同时插入图元。这就是它的目的。唯一需要注意的是,它不支持
长度的负值。一旦您了解了函数的行为,就不难看出发生了什么。顺便说一句,这句话背后的逻辑在文章的底部解释了。为什么不改用
.splice
呢?@TimDown你能推荐另一个功能来做同样的事情,但可能会让它更清楚吗?@minitech用什么方式?谢谢。@thomas:
Array#splice(开始,长度)
做的事情也差不多。也可以同时插入图元。这就是它的目的。唯一需要注意的是,它不支持
长度的负值。