Estoy tratando de hacer algo como esto: OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n donde un usuario ingresaría una determinada fila de la matriz , y una determinada columna, y se puede colocar una X allí en lugar del cero. He intentado usar una tabla de interruptores, pero no puedo pensar en una forma más eficiente. Aquí está el código que tengo hasta ahora.
var allRows2 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows3 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows4 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows5 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows6 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows7 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows8 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows9 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var allRows10 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]; var userinr = prompt("Which row would you like to put the X in?"); var userinc = prompt("Which column would you like to put your piece in?"); switch(userin) { case "1": var therow = 1; break; case "2": var therow = 2; break; case "3": var therow = 3; break; case "4": var therow = 4; break; case "5": var therow = 5; break; case "6": var therow = 6; break; case "7": var therow = 7; break; } ``` I am unsure how to continue, any help would be appreciated:)En lugar de almacenar cada fila en una variable individual, almacene todas las filas en matrices anidadas. Luego haga referencia al elemento y la posición con la notación de paréntesis:
var allRows = [["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]]; const row = 2; const position = 5; allRows[row][position] = "X" console.log(JSON.stringify(allRows)) Si desea imprimir la matriz sin comas, puede usar Array.join y establecer el delimitador en una cadena vacía:
var allRows = [["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]]; const row = 2; const position = 5; allRows[row][position] = "X" for(const row of allRows){ console.log(row.join('')) }Aquí está mi ejemplo. Los comentarios deberían hacer que sea más fácil de entender.
// easiest way to make a grid. // Array(n), makes an empty array with a length of n. // Array.fill(v) changes all the array items to be v. // Array.map(function) makes a new array from what is returned from the callback function. const grid = Array(10) .fill([]) .map(() => Array(10).fill("o")); // Multidimentional arrays work in reverse. y then x. // grid[y][x] grid[5][3] = "x"; console.log("Example 1") grid.forEach(row => console.log(row.join(""))) // you can make a helper function to make it more intuitive. function change([x, y], value){ grid[y][x] = value; } // Now we can use the coordinates normally. console.log("\nExample 2") change([0, 5], "v") grid.forEach(row => console.log(row.join("")))