Javascript 反应:用零填充一个2D数组就是给出一个随机数组

Javascript 反应:用零填充一个2D数组就是给出一个随机数组,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我正在React中构建一个数独游戏,我编写的最后一个函数将制作该棋盘。 它制作一个空的棋盘(用零填充的2D数组),求解棋盘,然后取出一些随机值,使其成为一个可玩的数独游戏。 问题是,制作二维零数组给了我一个二维数组,里面填充了随机数。 我知道这很疯狂,但我不知道问题出在哪里,这让我很疯狂。 我使用过的代码片段: let emptyBoard=[ [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0,

我正在React中构建一个数独游戏,我编写的最后一个函数将制作该棋盘。 它制作一个空的棋盘(用零填充的2D数组),求解棋盘,然后取出一些随机值,使其成为一个可玩的数独游戏。 问题是,制作二维零数组给了我一个二维数组,里面填充了随机数。 我知道这很疯狂,但我不知道问题出在哪里,这让我很疯狂。 我使用过的代码片段:

let emptyBoard=[
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
];
让emptyBoard=新数组(9.fill)(新数组(9.fill)(0));
let emptyBoard=[];
for(设i=0;i<9;i++){
清空板。推动([]);
for(设j=0;j<9;j++){
清空板[i]。推送(0);
}
}
完整的功能如下所示:

makeBoard(){
让清空黑板=[
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
];
控制台日志(清空板);
设{result,cells}=this.solveAndShuffle(清空板);
如果(结果){
让shuffledKeys=this.shuffle([…数组(81).keys()]);
for(随机键中的let键){
常数子网格=数学层(图例/9);
常量单元格=键%9;
const cellValue=单元格[子网格][单元格];
单元[子网格][单元]=0;
const solutions=this.cellSolutions(子网格、单元、单元);
if(solutions.length!==1&&solutions.length!==2){
单元[子网格][单元]=单元值;
}
}
const immutable=this.immutableCells(cells);
这是我的国家({
细胞:细胞,
不可变的,
错误单元格:新数组(9).fill(新数组(9).fill(false)),
原因错误:新数组(9).fill(新数组(9).fill(false)),
已解决:错误
});
}否则{
警惕(‘试着做一块板子时出错了!);
}
}
我甚至在Github页面上的console.log中部署了它。如果有人想在线检查它,您可以按“New”来调用该函数

代码托管在


我感谢任何能提供帮助的人♥

如果问题是您在控制台中看到随机填充的数组,那么这只是Chrome Dev Tools显示值的方式。如果打开阵列,您会看到蓝色的“i”图标,上面写着:“下面的值刚刚被计算过”-这意味着记录的阵列是通过引用记录的,并且它的值在记录之后发生了更改。尝试使用
JSON.stringify()
检查该值。我想,你的代码一切正常:)

什么是
solveAndShuffle
?数组似乎在哪一行填充了随机值?@CertainPerformance它通过洗牌每个单元格的可能解来解决空板问题。通过这种方式,我确保得到一个随机求解的网格。这意味着什么还不清楚:问题是,制作二维零数组给了我一个二维数组,其中填充了随机变量numbers@CertainPerformance如果可以,请打开已部署的数独,打开浏览器控制台,然后单击“新建”按钮,在我声明的函数“清空板”中定义的2D数组,然后我使用console.log(emptyBoard)直接将其打印到控制台,它应该是一个9个数组的数组,每个数组都有9个零,但console.log打印的是一个9个数组的数组,其中填充了随机整数。@CertainPerformance感谢链接其他问题,我从来没有想到问题会是console.log acts T_TI在看到你的答案时几乎哭了,因为这毁了我的周末。非常感谢,Limbo