我试图遍历一个赋给变量的数组,但我使用的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条答案
按热度按时间lp0sw83n1#
提供的MRE在循环的某些迭代中确实会产生
undefined
,这是由于一个off-by-one逻辑缺陷。它应该使用Math.floor
,而不是Math.round
。因此,要么你在原始问题中制造了类似的逻辑缺陷,要么提供的MRE不是原始问题的MRE。