3 回答
TA贡献1831条经验 获得超4个赞
我正在尝试使用 .foreach() 为数独创建一个打印函数。输入是例如
var Sudoku =[[0,0,0,2,6,0,7,0,1], [6,8,0,0,7,0,0,9,0],[1,9,0,0,0,4,5,0,0],[8,2,0,1,0,0,0,4,0],[0,0,4,6,0,2,9,0,0],[0,5,0,0,0,3,0,2,8],
[0,0,9,3,0,0,0,7,4],[0,4,0,0,5,0,0,3,6],[7,0,3,0,1,8,0,0,0]];
并且预期的输出应该是
0 0 0 2 6 0 7 0 1
6 8 0 0 7 0 0 9 0
1 9 0 0 0 4 5 0 0
8 2 0 1 0 0 0 4 0
0 0 4 6 0 2 9 0 0
0 5 0 0 0 3 0 2 8
0 0 9 3 0 0 0 7 4
0 4 0 0 5 0 0 3 6
7 0 3 0 1 8 0 0 0
通常我们使用 for 循环,但是我们如何使用 foreach() 或任何其他数组方法来获得相同的结果呢?我尝试了以下代码
function print(array) {
let count = 0
array.forEach(nested => nested.forEach(Element => {
let out = "";
out += Element + " ";
console.log(out);
}));
}
但是输出一个一个地显示每个元素,例如
1
0
0
4
8
9
0
很快..
TA贡献1828条经验 获得超3个赞
您可以console.log使用方法尝试每一行toString(并将逗号替换为空格):
var Sudoku =[
[0,0,0,2,6,0,7,0,1],
[6,8,0,0,7,0,0,9,0],
[1,9,0,0,0,4,5,0,0],
[8,2,0,1,0,0,0,4,0],
[0,0,4,6,0,2,9,0,0],
[0,5,0,0,0,3,0,2,8],
[0,0,9,3,0,0,0,7,4],
[0,4,0,0,5,0,0,3,6],
[7,0,3,0,1,8,0,0,0]
];
Sudoku.forEach(row => console.log(row.toString().replace(/,/g," ")))
TA贡献1719条经验 获得超6个赞
这取决于你对它的外观有多挑剔。最短的解决方案是
console.table(Sudoku);
但这给了你一张带标题的表格,所以可能并不完美。
如果你可以使用reduce那么我建议:
sudokutxt = Sudoku.reduce((acc, arr) => {acc.push(arr.join(' ')); return acc;}, []).join('\n');
我的forEach解决方案是:
let sudokutxt = '';
Sudoku.forEach(arr => sudokutxt += arr.join(' ') + '\n')
添加回答
举报