Неопределенная переменная сразу после назначения - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь перебрать массив, назначенный переменной, но IDE, которую я использую, говорит мне, что переменная не определена. Я попытался решить проблему, используя console.log(variable_name.length), и он успешно возвращает длину массива, но он все еще говорит мне, что переменная не определена при попытке ее перебрать.

function availableActions(state, reward_matrix) {
  var current_state_row = reward_matrix[state];
  console.log(current_state_row.length);

  let av_act = [];

  for (var i = 0; i < current_state_row.length; i++) {
    if (current_state_row[i] != 0) {
      av_act.push(i);
    }
  }

  return av_act;
}

После попытки чтобы запустить скрипт, я получаю следующую ошибку:

TypeError: current_state_row is Undefined

В этом примере программа возвращает undefined среди серии массивов. Я считаю, что именно это и является причиной ошибки.

MRE

function getRand(min, max) {
  let rand = Math.random();
  let number = rand * (max - min) + min;
  number = Math.round(number);
  return number;
}

let total = 0;

let grid = new Array(100)
for(var i = 0; i <100; i++){
  grid[i] = []
  for(var j = 0; j < 10; j++){
    grid[i].push(0)
    total++
  }
}

for (var i = 0; i < 200; i++) {
  let x = getRand(0, grid.length);
  console.log(grid[x]);
}

1 Ответ

0 голосов
/ 18 апреля 2020

Предоставленное MRE выдает undefined на некоторых итерациях l oop из-за ошибки логики c в единичном случае. Следует использовать Math.floor, а не Math.round.

Таким образом, вы либо создаете аналогичный дефект логики c в своей первоначальной проблеме, либо предоставляемое MRE не MRE для этой исходной проблемы.

Если бывший, пожалуйста, примите этот ответ в качестве решения. Если последнее, пожалуйста, обновите вопрос с более точным MRE.

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

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