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')
添加回答
舉報