从特定位置的数组中删除值

Gde*_*ock 43 javascript arrays random

我意识到这个主题有很多主题,但我相信这个主题是不同的:

目标是从随机位置的数组中获取值,然后删除此值.

我使用John Resig(jQuery的创建者)的这一部分来删除一个元素,但它似乎没有听我给它的位置

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);
};
Run Code Online (Sandbox Code Playgroud)

这是我如何使用它

var elements = ['#1','#2','#3','#4']
var R1 = Math.floor(Math.random() * elements.length),
E1 = elements.slice(R1,1)
elements.remove(R1)
var R2 = Math.floor(Math.random() * elements.length),
E2 = elements.slice(R2,1)
elements.remove(R2)
var R3 = Math.floor(Math.random() * elements.length),
E3 = elements.slice(R3,1)
elements.remove(R3)
var R4 = Math.floor(Math.random() * elements.length),
E4 = elements.slice(R4,1)
Run Code Online (Sandbox Code Playgroud)

问题是删除功能,它在删除我认为的特定位置上的对象时不起作用.

out*_*man 16

你使用elements.slice(R3,1)错了.第二个参数不是您想要获取的数组的长度,而是切片方法应该停止时元素的从零开始的索引.所以你的代码说"给我从索引R3到索引1的元素",并且它只有一次可以工作:elements.slice(0, 1).如果你只需要一个元素 - 使用elements[R1].如果你需要使用一个元素获取数组,你可以继续使用sliceelements.slice(R1, R1 + 1);