Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як обійти двовимірний масив?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Обхід **двовимірного масиву** (або *матриці*) - одна з базових, але дуже важливих операцій у програмуванні. Оскільки це **масив масивів**, його потрібно обходити **вкладеними циклами**: зовнішній - по рядках, внутрішній - по стовпцях. **Ключове:** найчитабельніший і сучасний спосіб обходу - вкладені цикли `for...of`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняОбхід **двовимірного масиву** (або *матриці*) - одна з базових, але дуже важливих операцій у програмуванні. Оскільки це **масив масивів**, його потрібно обходити **вкладеними циклами**: зовнішній - по рядках, внутрішній - по стовпцях. --- ## Приклад двовимірного масиву: ```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); > } > } > ``` > > - це сучасний, читабельний і безпечний спосіб.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.