I'm trying to build 2d array with JS.
In a theater there is 26 lines, each one include 100 seats :
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());
The result is not far from what I expected, except that there is an empty item in each array... I don't understand why. Some help please ?
[
<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'
(...................)
Thanks in advance for your answer ;).
JavaScript arrays' index start from 0 that's why your first item is always empty because you have skipped index 0 and started your iteration from index 1. You need to fill your array starting from index 0!
The correct version of your code could be:
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;
}
It's just because you're using 1 as the 1st index instead of 0, array index starts in 0, something like:
An array of 7 elements have those indexes: 0,1,2,3,4,5,6. So when setting a value to a position you'll begin like: array[0] = 'some value', array[1] = 'some other value' ...
Here in your for loop you'll need to begin with i and j = 0. So it'll look like
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());