I have this array of objects structure:
arr = [
{seat: [{available: false, id: 1},{available: false, id: 5},{available: true, id: 9},{available: true, id: 13},{available: true, id: 17},{available: true, id: 21},{available: true, id: 25},{available: true, id: 29},{available: true, id: 33},{available: true, id: 37},{available: true, id: 41}]},
{seat: [{available: true, id: 2},{available: true, id: 6},{available: true, id: 10},{available: true, id: 14},{available: true, id: 18},{available: true, id: 22},{available: true, id: 26},{available: true, id: 30},{available: true, id: 34},{available: true, id: 38},{available: true, id: 42}]},
{seat: [{available: true, id: 3},{available: false, id: 7},{available: true, id: 11},{available: true, id: 15},{available: true, id: 19},{available: true, id: 23},{available: true, id: 27},{available: true, id: 31},{available: true, id: 35},{available: true, id: 39},{available: true, id: 43}, {available: true, id: 45},{available: true, id: 47}]},
{seat: [{available: true, id: 4},{available: true, id: 8},{available: false, id: 12},{available: true, id: 16},{available: true, id: 20},{available: true, id: 24},{available: true, id: 28},{available: true, id: 32},{available: true, id: 36},{available: true, id: 40},{available: true, id: 44},{available: true, id: 46},{available: true, id: 48}]},
]
And I need to have a row of seats every 4 seats:
[
{seat: [{available: false, id: 1},{available: true, id: 2},{available: true, id: 3},{available: true, id: 4}]},
{seat: [{available: true, id: 5},{available: false, id: 6},{available: true, id: 7},{available: true, id: 8}]},
{seat: [{available: false, id: 9},{available: true, id: 10},{available: true, id: 11},{available: true, id: 12}]},
{seat: [{available: true, id: 13},{available: true, id: 14},{available: false, id: 15},{available: true, id: 16}]},
{seat: [{available: true, id: 17},{available: true, id: 18},{available: false, id: 19},{available: true, id: 20}]},
{seat: [{available: true, id: 21},{available: true, id: 22},{available: false, id: 23},{available: true, id: 24}]},
{seat: [{available: true, id: 25},{available: true, id: 26},{available: false, id: 27},{available: true, id: 28}]},
{seat: [{available: true, id: 29},{available: true, id: 30},{available: false, id: 31},{available: true, id: 32}]},
{seat: [{available: true, id: 33},{available: true, id: 34},{available: false, id: 35},{available: true, id: 36}]},
{seat: [{available: true, id: 37},{available: true, id: 38},{available: false, id: 39},{available: true, id: 40}]},
{seat: [{available: true, id: 41},{available: true, id: 42},{available: false, id: 43},{available: true, id: 44}]},
{seat: [{available: false, id: null},{available: false, id: null},{available: false, id: 45},{available: true, id: 46}]},
{seat: [{available: false, id: null},{available: false, id: null},{available: false, id: 47},{available: true, id: 48}]},
]
Notice that the third and fourth seat object has more seats than the first and second one, so in the last two seat rows from the output, it has null values because there are no seats from the first and second rows I tried this:
const transpose = (data) => {
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < i; j++) {
const tmp = data[i][j];
data[i][j] = data[j][i];
data[j][i] = tmp;
}
}
};
transpose(arr);
but that outputs everything wrong, this is for seat selection on a plane, so the database is returning every 3 columns, but to print it on a grid I need that columns to be regular rows... or maybe if you know a better way to map the seats vertically (it is an app)
Thanks in advance for your response!
Pastebin with the full structure of arrayhttps://pastebin.com/TEy9k2FB
EDIT: structure typos, pastebin with the full structure EDIT 2: changed the structure of the question, not transposing anymore
[seat: [] ]is not valid javascript. Did you mean{seat: [] }?