Google脚本中的动态if语句

时间:2019-07-08 19:32:56

标签: arrays if-statement google-apps-script

我具有下面的函数,如果行中的每个值都相同,则将数组中的值设置为“”,然后从数组中删除空白值

如果我有

arr = [[[a],[a]],[[a],[b]],[[a],[c]],[[b],[a]],[[b],[b]],[[b],[c]],[[c],[a]],[[c],[b]],[[c],[c]]]

我最终以

 [[[[a],[b]],[[a],[c]],[[b],[a]],[[b],[c]],[[c],[a]],[[c],[b]]]]

但是,如果我的数组具有n个维度而不是2个维度

我不知道如何动态地写这部分

for (var i = 0; i < values.length; i++) {
   if (values[i][0] == values[i][1]) {
       values[i][0] = '';
       values[i][1] = '';
   }
 }

以便if语句正在测试 values[i][0] == values[i][1]... ==values[i][n]

谢谢

我的功能

function removeEmptyRng(shtName, rng, outputRng) {
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
var lr = sht.getLastRow();

var range = sht.getRange(rng + lr);
var values = range.getValues();

 for (var i = 0; i < values.length; i++) {
   if (values[i][0] == values[i][1]) {
       values[i][0] = '';
       values[i][1] = '';
   }
 }
 //Remove Empty values
 values = values.filter(function(a) {return a.filter(Boolean).length > 0;});

 if (outputRng == true) 
 {sht.getRange(1,2,values.length,values[0].length).setValues(values)};

 return values
}

1 个答案:

答案 0 :(得分:1)

您可以立即过滤掉整行中的不等式...基本上是说:“如果其中一个值不等于该行的第一个,则保留一行” =>并非所有值都相等。

values = values.filter(
  function(row) {
    return row.some(
      function(val) {
        return val != row[0]});
});
相关问题