Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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_Random - Fatal编程技术网

使用Javascript从数组中随机选择唯一项

使用Javascript从数组中随机选择唯一项,javascript,random,Javascript,Random,我知道有很多类似的问题,我已经讨论了其中的大部分。最接近我试图实现的代码是。 我在每列中都有一个人员列表(代表一天)。为了回答这个问题,我们假设每列有8个人。我需要随机选择5个唯一的人名。我使用了splice()从数组中删除所选项目,以确保它不会被选中两次。我对编码还不熟悉,我想我犯了一些基本的错误,因为拼接工作在第一个循环中,然后阵列返回到原始循环。你能帮我找出我的错误吗 for (var x = 0; x < 5; x++) { var sourceArray = ss.getRang

我知道有很多类似的问题,我已经讨论了其中的大部分。最接近我试图实现的代码是。 我在每列中都有一个人员列表(代表一天)。为了回答这个问题,我们假设每列有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);
for(变量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];
源阵列拼接(gg,1);
变量HLAselect=ss.getRange(30+x,j+5,1,1)
HLAselect.setValue(pickedHLA);

在您的
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);
}
var sourceArray=ss.getRange(49,j+5,8,1).getValues();//建立完整的人员列表
对于(变量x=0;x<5;x++){
var gg=Math.floor(Math.random()*sourceArray.length);//获取随机索引
var pickedHLA=sourceArray[gg];//通过随机索引获取随机人
splice(gg,1);//从完整的人员列表中删除随机人员
变量HLAselect=ss.getRange(30+x,j+5,1,1)
HLAselect.setValue(pickedHLA);
}

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

var arr=[“奶酪”、“紫色”、“列表”、“1”、“2”、“3”、“4”、“5”];
函数随机(){
var randomNumber1=parseInt(Math.random()*arr.length);
var random=arr[randomNumber1];
警报(随机);
}

如果
随机
返回
1