【发布时间】:2017-06-21 15:23:33
【问题描述】:
我试图返回一个“矩阵”或一个二维数组,其中布尔值根据旁边有多少“真”值变成一个 1-4 的数字。我之前尝试了一种不同的方法,由下面的当前代码表示。
问题:
当matrix = [[true, false, false], [false, true, false],[false, false, false]]时
输出应该是 [[1, 2, 1],[2, 1, 1],[1, 1, 1]]
我的代码:
function minesweeper(matrix) {
for( var i =0; i < matrix.length; i++){
for(var j = 0; j < matrix.length; j++){
if(matrix[i] && matrix[i][j] == true){
matrix[i][j] = 2;
}else {
matrix[i][j] = 1;
}
}
}
return matrix;
}
我的错误/结果:
输入矩阵:[[true,false,false],[false,true,false],[false,false,false]]
输出:[[2,1,1],[1,2,1],[1,1,1]]
预期输出:[[1,2,1], [2,1,1], [1,1,1]]
输入矩阵:[[false,false,false], [false,false,false]]
输出:[[1,1,1], [1,1,1]]
预期输出:[[0,0,0], [0,0,0]]
输入矩阵:[[true,false,false,true], [false,false,true,false], [true,true,false,true]]
输出:[[2,1,1,2], [1,1,2,1], [2,2,1,2]]
预期输出:[[0,2,2,1], [3,4,3,3], [1,2,3,1]]
【问题讨论】:
-
您遇到了具体问题吗?你能比“我的代码有什么问题”更具体吗?
-
@Necoras 我只是想弄清楚如何将布尔值转换为数字并根据真/假正确递增它们。我之前的代码与我需要的代码相差无几。
-
布尔值已经是数字:0 - 假,1 - 真。至于弄清楚如何正确地将附近的真/假值映射到 1-4,我怀疑这是你分配的重点,所以我将把那里的逻辑留给你。但是,我会指出您正在修改初始
matrix并返回它,而不是将新 (1-4) 值存储在新的矩阵变量中。这永远不会给您正确的值,因为当您尝试计算第二个值时,您已经将初始矩阵更改为与起始条件不同。 -
@Necoras 感谢您的帮助!我知道他们已经有 0 和 1,我不确定是否有额外的步骤来允许递增。
标签: javascript arrays boolean increment