Javascript-迭代时处理多维数组中的值

时间:2019-11-08 15:58:19

标签: javascript multidimensional-array

我得到了一个矩阵,对于每个值为0的索引,我也必须将其正下方的索引也设为0。

for(let i = 0; i < matrix.length; i++) {
    for(let j = 0; j < matrix[i].length;j++) {
        //figure out what rooms not 0
        if(matrix[i][j] !== 0) {
            goodRooms.push(matrix[i][j])             
        } else {
            matrix[i + 1][j] = 0;
        }
    }
}

我不断得到

  

TypeError: Cannot set property '0' of undefined

else语句中,我不确定为什么。

1 个答案:

答案 0 :(得分:1)

else更改为

else if(i < matrix.length - 1)

否则,如果您位于最后一行并且值为0,则将访问不存在的下一行。

最终代码应类似于:

for(let i = 0; i < matrix.length; i++) {
    for(let j = 0; j < matrix[i].length; j++) {
        if(matrix[i][j] !== 0) {
            goodRooms.push(matrix[i][j]);
        } else if(i < matrix.length - 1) {
            matrix[i + 1][j] = 0;
        }
    }
}

注意:这将在循环到达该行之前更改下一行。因此,如果第一行包含一个0值,那么第二行将在循环访问它之前被更改,因此当循环到达它时,该值将已经为0,因此整列将被递归设置为0。