Javascript - 在迭代时操作多维数组中的值

标签 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 语句中,我不确定为什么。

最佳答案

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。

关于Javascript - 在迭代时操作多维数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58769957/

相关文章:

javascript - amchart生成饼图,需要在切片内设置不同的颜色和标签

javascript - 响应式设计没有响应

javascript - 使用 Angular 数字格式过滤器格式化值

.net - 使用ProtoBuf-Net,如何对多维数组进行(反)序列化?

c - 在 C 中初始化数组不起作用

python - 如何获得通过给定点的嵌套列表的对角线 - Python

php - 如何用多维数组更新mysql表

javascript - 第三方网站的登录对话框

javascript - 打开自定义模式窗口时如何添加过渡效果?

javascript - 设置jquery多维数组