Динамическое выражение if в скрипте Google - PullRequest
0 голосов
/ 08 июля 2019

У меня есть функция ниже, которая устанавливает значения в массиве на "", если каждое значение в строке идентично, а затем удаляет пустые значения из массива

Если у меня есть

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 измерений вместо двух

Я не могу понять, как написать эту часть динамически

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 Ответ

1 голос
/ 08 июля 2019

Вы можете сразу же отфильтровать неравенство во всей строке ... По сути, говоря: "сохранить строку, если одно из ее значений не равно первому в строке" => не все равны.

values = values.filter(
  function(row) {
    return row.some(
      function(val) {
        return val != row[0]});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...