【问题标题】:Removing value from array on specific location [duplicate]从特定位置的数组中删除值[重复]
【发布时间】:2013-06-12 02:37:06
【问题描述】:

我知道关于这个主题有很多话题,但我相信这个是不同的:

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

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

问题在于删除功能,我相信在删除特定位置上的对象时它不起作用。

【问题讨论】:

  • 这不是你写的吗?这与 John Resig(jQuery 的创建者)编写的实现完全相同。
  • 是的,我在这里找到了第一部分抱歉没有提到它,我是新来的
  • 你的代码应该做什么?
  • 它应该给出 4 到 4 个函数中的随机 id,但绝不会加倍,所以基本上我想得到 1 到 4 的不同组合

标签: javascript arrays random


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2020-01-30
    • 2018-05-20
    • 1970-01-01
    • 2018-01-19
    • 2014-07-05
    • 2014-11-25
    相关资源
    最近更新 更多