如何检查Google Script中第二个数组中是否存在特定的数组编号

时间:2018-06-18 18:48:02

标签: google-apps-script

我正在尝试构建一个快速的伪随机数生成器,它具有唯一的数字,但有一个扭曲。挑选的数字来自逐渐增加的样本集,即。 (1-20)然后(2-21)...但由于我有限的编码经验,我得到一些重复。使用Google Script,有没有办法检查另一个数组中是否存在特定的数组元素?

  function temp3() {
var ss = 
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet6");
 var range = ss.getRange("b14:av14");
 var m = 0

 var picks = [];

 for(var j = 1; j < 48; j++) {
  var array1 = [1+m, 2+m, 3+m, 4+m, 5+m, 6+m, 7+m, 8+m, 9+m, 10+m, 
11+m, 12+m, 13+m, 14+m, 15+m, 16+m, 17+m, 18+m, 19+m, 20+m];

  shuffleArray(array1); 
  picks.push(array1[0]);

  m = m + 1
 }
   ss.getRange(16, 2, 1, 47).setValues([picks]); 
}

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,但是如果你不想过多修改你当前的方法,可以添加一个单独的函数来检查选择是否已包含你的号码。如果它确实删除了第一个元素并再次运行该函数。如果没有,请添加到选秀权。

function temp3() {
    var ss = 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet6");
    var range = ss.getRange("b14:av14");
    var m = 0
    var picks = [];
    for (var j = 1; j < 48; j++) {
        var array1 = [1+m, 2+m, 3+m, 4+m, 5+m, 6+m, 7+m, 8+m,
                      9+m, 10+m, 11+m, 12+m, 13+m, 14+m, 15+m,
                      16+m, 17+m, 18+m, 19+m, 20+m];
        shuffleArray(array1); 
        picks = addToPicks(array1,picks)
        m = m + 1
    }
    ss.getRange(16, 2, 1, 47).setValues([picks]); 
}

function addToPicks(arr,picks) {
    if (picks.indexOf(arr[0]) === -1) {
        picks.push(arr[0])
        return picks
    }
    arr.shift();
    return addToPicks(arr,picks);
}

您也可以在shuffleArray函数中执行此操作。

顺便说一句,不是调用你的shuffleArray函数,而是尝试检出Math.random's documentation.这里有一个函数可以在两个数字之间生成一个随机整数的例子,这对你来说可能比洗牌更有帮助。 / p>

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}