arrays - 如何为已打乱的数组添加依赖项?

标签 arrays algorithm if-statement google-apps-script google-sheets

我有一个脚本可以随机排列数组中的值。这些值代表有空的人。当它们不可用时,它们将从阵列中移除。我希望使这个数组“动态”,因为它根据工作表中值的数量调整范围。

我已经尝试创建一个命名范围,但这并不能消除更改命名范围大小的手动任务。从数组中删除一个人将导致空白单元格与其他值混入。我尝试过使用 .filter() 函数进行试验,但在 JS 和应用程序脚本方面我相当业余。

function myFunction() {
  var ss =     SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test Sheet");
  var candidates = ss.getRange("Test Sheet!B2:B10").getValues();
  var arrayValues = ss.getRange("Test Sheet!F1:F12").getValues();


  for (var x = 0; x < arrayValues.length; x++) {
    var range = ss.getRange(1, 6, 12);
    var array = range.getValues();                          
    shuffleArray(array);
    range.setValues(array);
  } 
}
function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
  }
}

使范围动态化或忽略数组中的空白单元格是我的目标。

最佳答案

  • 您想从 var range = ss.getRange(1, 6, 12) 中随机化“F1:F12”的单元格。
  • 例如,如果“F1:F12”的值是["a", "b", "", "c", "d"],你想这样做[“b”、“a”、“d”、“c”]
    • 您想删除空单元格。

如果我的理解是正确的,这个修改怎么样?我觉得你的情况,可以使用randomize()的方法。

修改后的脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.getRange("Sheet1!F1:F12").randomize();
}

引用:

关于arrays - 如何为已打乱的数组添加依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54717266/

相关文章:

python - 如何在有和没有重叠的情况下将 numpy 数组拆分为固定大小的 block ?

arrays - CakePHP 中的冗余 ModelName 查找结果

c# - 我可以在不复制内存的情况下创建一个包含现有数组子集的新数组引用吗?

algorithm - 在 0 和 1 的矩阵中找到不同的 2X2 正方形的优化解决方案

c - 如何动态居中对齐 char * 字符串中的文本以适应 C 中总共 16 个空格?

php - 搜索具有开始和结束持续时间(以秒为单位)的数组(视频)以查找完整长度的视频

java - Java 中的快速排序算法排序不正确(第一个元素作为枢轴)

JavaScript:压缩 if else 语句

arrays - 创建一个函数来迭代和循环 Swift 中的数组

c++ - 有没有更优雅的方法来使用带有独立 if() 的 else 语句