Преобразование массива в 2D массив внутри цикла - PullRequest
0 голосов
/ 07 января 2020

У меня есть al oop, который определяет массивы с изменяющимися переменными - всегда начинаются строки и номера строк. Мне нужно было бы иметь доступ к определенным столбцам в этом массиве, но я понятия не имею, как это сделать.

var nameRowN = starting row numbers already in an array
var sor = number of rows in each mini array (which is arej variable) already calculated and put in an array

 for (var m = 0; m < nameRowN.length; m++) { 
      arej[m] = sourcesheet.getRange(nameRowN[m],5,sor[m]-1,29).getValues();
 }

Например, arej[0] дает мне это:

[20-01-07 11:35:33:289 GMT] arej: ,water outlet,,,,,,,,,,,,,,,,,,,,,,,,,,,,Chlorine content,,,,,1 / day alternate,,ASTM,,,,,NSP,,,Sat 1899,,0.2,,,,ppm,,,2ppm,,,,,WATER,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Пустые ячейки в порядке, потому что они всегда одинаковые в одном и том же месте. Мне нужно получить доступ к определенным данным из этих массивов, которые всегда находятся в одном и том же столбце, иногда в нескольких строках. В приведенном выше примере это в 3 строки. Я застрял, потому что я не знаю, что с этим делать.

1 Ответ

2 голосов
/ 07 января 2020

Если бы я написал декларацию типа для arej, это было бы any[][][]. Другой способ сказать, что это Array<any[][]> - вы создали его как массив, элементы которого являются результатом вызова getValues. Какой тип возврата у getValues? Массив, элементы которого представляют строки электронной таблицы, также являясь массивом значений ячеек в этой строке (т. Е. Значений столбцов). Так что продолжайте индексирование!

// arej[0] -> first 2D array of [rowIndex][columnIndex]
// arej[1] -> second 2D array
// ...
// arej[0][0] -> first row in arej[0]
// arej[0][0][0] -> first column in the first row in the first range stored in arej
// Print all values
arej.forEach(function (rg, rgIdx) {
  // rg is arej[0], then arej[1], etc.
  rg.forEach(function (row, rowIdx) {
    row.forEach(function (value, colIdx) {
      Logger.log("rg#: " + rgIdx + ", row#: " + rowIdx + ", col#: " + colIdx + ", Val: '" + value + "'");
    });
  });
});

Здесь я уменьшаю вероятность ошибок индексации с помощью метода класса Array forEach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...