Допустим, у меня есть "прямоугольная сетка", состоящая из вложенных массивов, например:
let board = [
['a0', 'a1', 'a2', 'a3', 'a4'],
['b0', 'b1', 'b2', 'b3', 'b4'],
['c0', 'c1', 'c2', 'c3', 'c4'],
['d0', 'd1', 'd2', 'd3', 'd4'],
];
Я пытаюсь перебрать по всем столбцам , поэтому результат будет выглядеть как 'a0', 'b0', 'c0', 'd0', 'a1'... etc
.
Конечно, я могу сделать это, используя старый добрый цикл:
const iterateAcrossColumnsES5 = () => {
for (let i = 0; i < board[0].length; i++) {
for (let j = 0; j < board.length; j++) {
console.log(board[j][i]);
}
}
}
Но мне нравится пытаться сделать его более ES6, более кратким и читабельным Я пытаюсь использовать для .. из и / или для .. в петлях, но я получил только до:
const iterateAcrossColumnsES6 = () => {
for (let [i, item] of Object.entries(board)) {
for(let row of board) {
console.log(row[i])
}
}
}
Но это ни кратко , ни читабельно , и это работает только в том случае, если board является квадратом (длина родительского массива равна так же, как его дети), в противном случае я получил слишком много или недостаточно итераций.
Можно это сделать? Я не пытался использовать map()
или forEach()
, я в порядке. с ними, но мне любопытно, могу ли я использовать только for..of
или for..in
.