I\'ve got an array of arrays, something like:
[
    [1,2,3],
    [1,2,3],
    [1,2,3],
]
I would like to transpose it to get the following
One-liner that does not change given array.
a[0].map((col, i) => a.map(([...row]) => row[i]))
                                                                        Just another variation using Array.map. Using indexes allows to transpose matrices where M != N:
// Get just the first row to iterate columns first
var t = matrix[0].map(function (col, c) {
    // For each column, iterate all rows
    return matrix.map(function (row, r) { 
        return matrix[r][c]; 
    }); 
});
All there is to transposing is mapping the elements column-first, and then by row.
const transpose = array => array[0].map((r, i) => array.map(c => c[i]));
console.log(transpose([[2, 3, 4], [5, 6, 7]]));
array[0].map((_, colIndex) => array.map(row => row[colIndex]));
mapcalls a providedcallbackfunction once for each element in an array, in order, and constructs a new array from the results.callbackis invoked only for indexes of the array which have assigned values; it is not invoked for indexes which have been deleted or which have never been assigned values.
callbackis invoked with three arguments: the value of the element, the index of the element, and the Array object being traversed. [source]
Edit: This answer would not transpose the matrix, but rotate it. I didn't read the question carefully in the first place :D
clockwise and counterclockwise rotation:
    function rotateCounterClockwise(a){
        var n=a.length;
        for (var i=0; i<n/2; i++) {
            for (var j=i; j<n-i-1; j++) {
                var tmp=a[i][j];
                a[i][j]=a[j][n-i-1];
                a[j][n-i-1]=a[n-i-1][n-j-1];
                a[n-i-1][n-j-1]=a[n-j-1][i];
                a[n-j-1][i]=tmp;
            }
        }
        return a;
    }
    function rotateClockwise(a) {
        var n=a.length;
        for (var i=0; i<n/2; i++) {
            for (var j=i; j<n-i-1; j++) {
                var tmp=a[i][j];
                a[i][j]=a[n-j-1][i];
                a[n-j-1][i]=a[n-i-1][n-j-1];
                a[n-i-1][n-j-1]=a[j][n-i-1];
                a[j][n-i-1]=tmp;
            }
        }
        return a;
    }