let seats = [ [1, 1, 0, 1, 0], [0, 1, 1, 1, 0], [1, 0, 1, 0, 0], ]; function reserveFirstAvailableSeat(seats) { for (let i = 0; i < seats.length; i++) { for (let j = 0; j < seats[i].length; j++) { if (seats[i][j] === 0) { seats[i][j] = 1; // Reserve the seat console.log(`Reserved seat at row ${i + 1}, column ${j + 1}`); break; } } } } reserveFirstAvailableSeat(seats);
The code ends up making 3 reservations instead of 1. This is because the break statement only breaks out of the inner loop, not the outer loop. To fix this, you can replace the break statement with a return statement.
let seats = [ [1, 1, 0, 1, 0], [0, 1, 1, 1, 0], [1, 0, 1, 0, 0], ]; function reserveFirstAvailableSeat(seats) { for (let i = 0; i < seats.length; i++) { for (let j = 0; j < seats[i].length; j++) { if (seats[i][j] === 0) { seats[i][j] = 1; // Reserve the seat console.log(`Reserved seat at row ${i + 1}, column ${j + 1}`); return; } } } } reserveFirstAvailableSeat(seats);
Alternatively, you can use labeled statements to explicitly break out of the outer loop:
let seats = [ [1, 1, 0, 1, 0], [0, 1, 1, 1, 0], [1, 0, 1, 0, 0], ]; function reserveFirstAvailableSeat(seats) { rows: for (let i = 0; i < seats.length; i++) { columns: for (let j = 0; j < seats[i].length; j++) { if (seats[i][j] === 0) { seats[i][j] = 1; // Reserve the seat console.log(`Reserved seat at row ${i + 1}, column ${j + 1}`); break rows; } } } } reserveFirstAvailableSeat(seats);