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

我知道这个话题有很多,但我认为这个不一样:

目标是从随机位置的数组中获取一个值,然后删除该值。

我使用 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);
};

我就是这么用的

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)

问题在于移除函数,它在移除特定位置的物体时无法工作。

1281 次浏览

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