【问题标题】:Randomly selecting unique items from an array with Javascript使用Javascript从数组中随机选择唯一项目
【发布时间】:2017-01-16 10:08:00
【问题描述】:

我知道有很多类似的问题,我已经解决了大部分问题。最接近我想要实现的代码是this one。 我在每一列(代表一天)中都有一个人员列表。为了这个问题,我们假设每列有 8 人。我需要随机选择 5 个独特的人名。我使用 splice() 从数组中删除所选项目,以确保它没有被选择两次。我是编码新手,我认为我犯了一些基本错误,因为拼接适用于第一个循环,然后数组返回到原始循环。请您帮忙找出我的错误吗?

for (var x = 0; x < 5; x++) {
var sourceArray = ss.getRange(49,j+5,8,1).getValues();
var gg = Math.floor(Math.random()*sourceArray.length);
var pickedHLA = sourceArray[gg];
sourceArray.splice(gg, 1);
var HLAselect = ss.getRange(30+x,j+5,1,1)
HLAselect.setValue(pickedHLA);

【问题讨论】:

    标签: javascript random


    【解决方案1】:

    在您的 for 循环中,您将在每次迭代期间重新定义 sourceArray - 您需要在循环外定义它,然后执行您的工作以从数组中随机选择和删除:

    var sourceArray = ss.getRange(49,j+5,8,1).getValues(); //establish full list of people
    
    for (var x = 0; x < 5; x++) {
      var gg = Math.floor(Math.random()*sourceArray.length); //get random index
      var pickedHLA = sourceArray[gg];  //get random person via random index
      sourceArray.splice(gg, 1); //remove random person from full list of people
      var HLAselect = ss.getRange(30+x,j+5,1,1)
      HLAselect.setValue(pickedHLA);
    }
    

    【讨论】:

    • sourceArray.length - 0.1 以防random 返回1
    【解决方案2】:

    你这样做的方式其实很简单,只需要几行代码:

    var arr = ["Cheese", "Purple", "List", "1", "2", "3", "4", "5"];
    function random() {
      var randomNumber1 = parseInt(Math.random() * arr.length);
      var random = arr[randomNumber1];
      alert(random);
    }
    &lt;button onClick="random()"&gt;Click Me&lt;/button&gt;

    给你!

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2012-04-11
      • 2011-02-28
      • 2016-05-09
      • 2012-03-27
      相关资源
      最近更新 更多