简体   繁体   中英

Multidimensional array with JS

Guys I'm trying to solve a programming problem. I have to generate a two-dimensional array containing blocks represented by colors.

The final result I want to achieve is this:

[4,4,4,4,4,4,4,4]
[2,2,1,1,1,1,1,1]
[2,2,1,1,1,1,1,1]
[3,6,5,5,6,5,5,3]
[3,6,6,5,5,6,6,3]


4: purple, occupies an entire line.
2: red, occupies two spaces on each line.
1: black occupies 6 spaces
3: orange, occupies 1 space of each line
6: blue, occupies 1 space
5: green occupies two line spaces

Can anybody help me? The code I'm trying to do is this:

let purple = [[4, 4, 4, 4, 4, 4, 4, 4]];
let red = [[2, 2], [2, 2]];
let black = [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]];
let orange = [[3], [3]];
let blue = [[6]];
let green = [[5, 5]];

let elements = [purple, red, black, orange, blue, green];

for (let i = 0; i < elements.length; i++) {
    console.log(elements[i])
}

 let purple = [ [4, 4, 4, 4, 4, 4, 4, 4] ]; let red = [ [2, 2], [2, 2] ]; let black = [ [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1] ]; let orange = [ [3], [3] ]; let blue = [ [6] ]; let green = [ [5, 5] ]; let elements = [purple, red, black, orange, blue, green]; let grid = [ [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0] ]; for (let i = 0; i < elements.length; i++) { jloop: for (let j = 0; j < elements[i].length; j++) { yloop: for (let y = 0; y < grid.length; y++) { for (let x = 0; x < grid[y].length; x++) { if (grid[y][x]) continue; let space_on_this_line = grid[y].length - x; if (elements[i].length <= space_on_this_line) { for (let k = 0; k < elements[i][j].length; k++) { grid[y][x + k] = elements[i][j][k]; } if (++j>=elements[i].length) break jloop; continue yloop; } } } } } for (let y = 0; y < grid.length; y++) { console.log(grid[y].join("")); }

something like this, right?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM