Estoy tratando de construir una matriz 2d con JS.
En un teatro hay 26 líneas, cada una incluye 100 asientos:
function theaterSeats() { let seats= new Array(26); for (let i = 1; i <= 26; i++){ seats[i] = new Array(100); for (let j = 1; j <= 100; j++) { seats[i][j] = `${i}-${j}` } } return seats; } console.log(theaterSeats());
El resultado no está lejos de lo que esperaba, excepto que hay un elemento vacío en cada matriz... No entiendo por qué. ¿Alguna ayuda por favor?
[ <1 empty item>, [ <1 empty item>, '1-1', '1-2', '1-3', '1-4', '1-5', '1-6', '1-7', '1-8', '1-9', '1-10', '1-11'
(..................)
Gracias de antemano por su respuesta ;).
El índice de matrices de JavaScript comienza desde 0, es por eso que su primer elemento siempre está vacío porque omitió el índice 0 y comenzó su iteración desde el índice 1. ¡Debe llenar su matriz comenzando desde el índice 0!
La versión correcta de su código podría ser:
function theaterSeats() { let seats= new Array(26); for (let i = 0; i < 26; i++){ seats[i] = new Array(100); for (let j = 0; j < 100; j++) { seats[i][j] = `${i + 1}-${j + 1}` } } return seats; }
Es solo porque está usando 1 como el primer índice en lugar de 0, el índice de matriz comienza en 0, algo así como:
Una matriz de 7 elementos tiene esos índices: 0,1,2,3,4,5,6. Entonces, cuando establezca un valor en una posición, comenzará así: matriz [0] = 'algún valor', matriz [1] = 'algún otro valor' ...
Aquí, en su ciclo for, deberá comenzar con i y j = 0. Entonces se verá como
function theaterSeats() { let seats= new Array(26); for (let i = 0; i <= 26; i++){ seats[i] = new Array(100); for (let j = 0; j <= 100; j++) { seats[i][j] = `${i+1}-${j+1}` } } return seats; } console.log(theaterSeats());