CryptBomj
@CryptBomj
Web(full-stack, больше front)

Почему первый элемент массива определён, а остальные undefined?

Такой код. Выгрузил данные массива ячеек таблицы в переменную, вывожу их в консоль, а там только один элемент числовой(хотя в таблице 2/3 ячейки числовые и 1 пустая), а остальные все идут исключительно undefined.

function scanDobav() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var second = spreadsheet.getSheetByName("2)Склад");
  second.activate();
  var shtrihDob = spreadsheet.getRange('L4:L6').getValues();
  var length = shtrihDob.length;
  var shtrihTov = spreadsheet.getRange('J4:J6').getValues();
  var length2 = shtrihTov.length;
  var tovValue = spreadsheet.getRange('C4:C6').getValues();
  var length3 = tovValue.length;

  var stolbec1 = 0;
  var stolbec2 = 0;
  var stolbec3 = 0;


  for (var l = 0; l != length; l++) {
    stolbec1 = shtrihDob[l];
    Logger.log("1 столбец:"+stolbec1[l])
    for (var j = 0; j != length2; j++) {
      stolbec2 = shtrihTov[j];
      Logger.log("2 столбец:"+stolbec2[j])
      if (stolbec2[j] == stolbec1[l] && stolbec2[j] != undefined){
        Logger.log("Совпали")
      for (var c = 0; c != length3; c++) {
        stolbec3 = tovValue[c];
        if (c == j){
          Logger.log("попал в диапозон")
        }
        Logger.log("3 столбец:"+stolbec3[c])
      }
      }
    }
  }

}


639e0ca2be160960694042.png
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
Isolution666
@Isolution666
Full-Stack Developer
Здравствуйте, CryptBomj
undefined = это значит вернул НИЧЕГО.
Ничего, это значит не пустая строка и не NULL, это значит что вообще ничего не вернул, если в вашем json есть эти значения, а вернулся undefined - значит вы не верно указали вложенность.
var second = spreadsheet.getSheetByName("2)Склад"); // такие частности лучше избегать, добавьте класс или id чтобы если текст поменяется, приложение не сломалось

Например "2)Склад" на "2) Склад" - и нужное коде уже не найдёт.

Ещё одна странность в коде:
Почему вы сравниваете со строкой ? typeof undefined - это не строка, это пустота
https://developer.mozilla.org/en-US/docs/Web/JavaS...
if (stolbec2[j] == stolbec1[l] && stolbec2[j] != undefined){
...
}


Вариации:
if (stolbec2[j] == stolbec1[l] && !stolbec2[j]){
...
}


или
if (stolbec2[j] == stolbec1[l] || !stolbec2[j]){
...
}


Я просто не знаю что возвращает json вы ведь с таблицей Excel работаете ?
Задайте для третьего столбца значение по умолчанию, если вернёт undefined , то можно будет выводит значение по умолчанию, либо на значение пришедшее из таблицы, так сказать по ссылке.
https://learn.javascript.ru/object-copy
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы