Javascript 使用map和filter获得与';正确';布尔掩码中的值

Javascript 使用map和filter获得与';正确';布尔掩码中的值,javascript,arrays,google-apps-script,indexing,filter,Javascript,Arrays,Google Apps Script,Indexing,Filter,我正在谷歌电子表格上工作,我想在其中执行以下操作: 我有两行范围:“源”和“目标”。在“源”区域中,有6个表示骰子的单元格,因此它们的值介于1和6之间 我的问题是创建一个函数,它本质上是将任何值低于某个数字的骰子复制到“dest”范围 我最初的解决方案是使用copyTo在“源”范围内循环,如下所示: function discard_lesser_dice(cutoff_value){ var ss = SpreadsheetApp.getActiveSpreadsheet() var

我正在谷歌电子表格上工作,我想在其中执行以下操作:

我有两行范围:“源”和“目标”。在“源”区域中,有6个表示骰子的单元格,因此它们的值介于1和6之间

我的问题是创建一个函数,它本质上是将任何值低于某个数字的骰子复制到“dest”范围

我最初的解决方案是使用
copyTo
在“源”范围内循环,如下所示:

function discard_lesser_dice(cutoff_value){
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var source = ss.getRangeByName('source');
  var dest = ss.getRangeByName('dest');

  for (var i = 1; i <= statusrow.getNumColumns(); i++) {   
    var srccell = source.getCell(1, i);
    if (srccell.getValue() < cuttoff_value)){
      srccell.copyTo(get_next_available_cell(dest));
    }
  }
}

function get_next_available_cell(range){
  for (var i = 1; 1 <= range.getNumColumns(); i++){
    var cell = range.getCell(1, i)
    if (cell.isBlank()){
      return cell
    }
  }
}
我的主要问题是,这种方法是否缺少一些本可以在这里更好地使用的工具

我的主要想法是,获取掩码中“真”值的索引数组的方法似乎非常粗糙(即
mask.map((bool,I)=>bool?I:-1)。filter(I=>I!=-1)
,我发现了它)

有没有合适的方法?或者,在这种情况下,我是否需要这样做,而我缺少了一种更明显的解决问题的方法?如果需要,谢谢你的帮助
你不介意提供它。

这就是你想要做的:

function movebelowN(n) {
  var n=n||6;
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getActiveSheet();
  const srg=sh.getRange(1,1,1,6);
  const drg=sh.getRange(2,1,1,6);
  let dvs=drg.getValues();
  let svs=srg.getValues();
  svs.forEach(function(d,i){
    d.forEach(function(v,j){
      if(v<n){
        dvs[i][j]=v;
      }else{
        dvs[i][j]='';
      }
    });
  });
  drg.setValues(dvs);
}
函数movebellown(n){
var n=n | 6;
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
常数srg=sh.getRange(1,1,1,6);
const drg=sh.getRange(2,1,1,6);
设dvs=drg.getValues();
设svs=srg.getValues();
svs.forEach(函数(d,i){
d、 forEach(函数(v,j){

如果(vHi,谢谢,这看起来是一个很好的解决方案;除了我不想在
drg
中有任何空格,这会不会留下那些带有
dvs[I][j]=''
语句的空格?我也在尝试格式化(背景、字体等)我想我可以用颜色、fontname、fontsize和use setBackground等数组。但我认为这可能会比它的价值更麻烦。我认为这会起作用。单元格有不同的格式吗?
function movebelowN(n) {
  var n=n||6;
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getActiveSheet();
  const srg=sh.getRange(1,1,1,6);
  const drg=sh.getRange(2,1,1,6);
  let dvs=drg.getValues();
  let svs=srg.getValues();
  svs.forEach(function(d,i){
    d.forEach(function(v,j){
      if(v<n){
        dvs[i][j]=v;
      }else{
        dvs[i][j]='';
      }
    });
  });
  drg.setValues(dvs);
}