Skip to content

How to insert an X in a specific location in a matrix where a user wants it?

I am trying to do something like this – OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n OOOOOOOOOO n where a user would input a certain row from the array, and a certain column, and an X can be placed there instead of the zero. I have tried using a switch table, but I can not think of a more efficient way. Here is the code I have so far.

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:)

Answer

Instead of storing each row in an individual variable, store all the rows in nested arrays. Then reference the item and position with bracket notation:

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))

If you want to print the array without commas, you can use Array.join and set the delimiter to an empty string:

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(''))
}