Skip to main content

Як обійти двовимірний масив?

Обхід двовимірного масиву (або матриці) - одна з базових, але дуже важливих операцій у програмуванні. Оскільки це масив масивів, його потрібно обходити вкладеними циклами: зовнішній - по рядках, внутрішній - по стовпцях.


Приклад двовимірного масиву:

javascript
const matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ];

1. Класичний спосіб через for

javascript
for (let i = 0; i < matrix.length; i++) { for (let j = 0; j < matrix[i].length; j++) { console.log(`matrix[${i}][${j}] = ${matrix[i][j]}`); } }
  • i - індекс рядка,
  • j - індекс стовпця.
  • matrix[i][j] - елемент у рядку i, стовпці j.

Вивід:

javascript
matrix[0][0] = 1 matrix[0][1] = 2 ... matrix[2][2] = 9

2. Через for...of (зручніше і коротше)

javascript
for (const row of matrix) { for (const value of row) { console.log(value); } }
  • Зовнішній for...of проходить по рядках,
  • Внутрішній - по елементах усередині рядка.

Найчитабельніший і найсучасніший спосіб обходу.


3. Через forEach()

javascript
matrix.forEach((row, i) => { row.forEach((value, j) => { console.log(`matrix[${i}][${j}] = ${value}`); }); });
  • Не потребує індексів у класичному вигляді,
  • Підходить для більш "функціонального" стилю,
  • Але не можна перервати цикл через break або return (на відміну від for).

4. За допомогою flat() (якщо потрібно обійти всі елементи підряд)

javascript
matrix.flat().forEach(value => console.log(value));

flat() перетворює двовимірний масив на звичайний одновимірний:

javascript
matrix.flat(); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

5. Через reduce() (для підрахунків)

Якщо потрібно, наприклад, підсумувати всі елементи:

javascript
const sum = matrix.reduce( (acc, row) => acc + row.reduce((a, b) => a + b, 0), 0 ); console.log(sum); // 45

Внутрішній reduce підсумовує рядок, зовнішній - все разом.


Коротко:

СпосібЩо робитьЧи можна перервати цикл
forПовний контроль, індексиТак
for...ofПростий і читабельний обхідТак
forEach()Функціональний стильНі
flat() + forEach()Обхід усіх значень як одновимірного масивуНі
reduce()Агрегація (наприклад, сума)Так (логічно)

Підсумок: Для обходу двовимірного масиву:

javascript
for (const row of matrix) { for (const value of row) { console.log(value); } }
  • це сучасний, читабельний і безпечний спосіб.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.