Как лучше развернуть двумерный массив?

Двумерный массив в JavaScript представляет собой массив, элементами которого являются другие массивы. Он используется для хранения и организации данных в виде таблицы или сетки, где данные сгруппированы по строкам и столбцам. Если у вас есть двумерный массив и вы хотите его развернуть, то это означает, что вы хотите поменять местами строки и столбцы массива.

Для развертки двумерного массива в JavaScript можно использовать несколько подходов. Рассмотрим два наиболее часто используемых метода:

1. Использование циклов:
Создайте новый двумерный массив с обратной структурой, где строки станут столбцами и наоборот. Затем, используя два цикла, переберите исходный массив и скопируйте элементы на соответствующую позицию в новом массиве.

Пример кода:

   function reverseArray(arr) {
     var rows = arr.length;
     var cols = arr[0].length;

     var reversedArray = [];

     for (var i = 0; i < cols; i++) {
       reversedArray[i] = [];

       for (var j = 0; j < rows; j++) {
         reversedArray[i][j] = arr[j][i];
       }
     }

     return reversedArray;
   }

   // Пример использования
   var originalArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
   var reversedArray = reverseArray(originalArray);

   console.log(reversedArray);
   // Вывод:
   // [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

2. Использование метода map:
Метод map позволяет применить функцию к каждому элементу массива и создать новый массив из результатов. Вы можете использовать map для применения другого метода map к исходному массиву, чтобы поменять местами строки и столбцы.

Пример кода:

   function reverseArray(arr) {
     return arr[0].map((_, i) => arr.map(row => row[i]));
   }

   // Пример использования
   var originalArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
   var reversedArray = reverseArray(originalArray);

   console.log(reversedArray);
   // Вывод:
   // [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Оба эти способа позволяют развернуть двумерный массив, но выбор метода зависит от ваших предпочтений и требований проекта. Циклы дают большую гибкость и контроль над процессом, в то время как метод map позволяет написать более компактный и изящный код. В любом случае, оба решения являются эффективными и могут быть легко адаптированы к конкретным потребностям.