Matrix Transformer

Original JavaScript Code

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

const transposeMatrix = (matrix) => {
    const matrix2 = Array.from({ length: matrix[0].length }, () => Array(matrix.length))
    for (let i = 0; i < matrix[0].length; i++) {
        matrix2[i] = []
        for (let j = 0; j < matrix.length; j++) {
            matrix2[i][j] = matrix[j][i]
        }
    }
    return matrix2
}

const rotateMatrix = (matrix) => {
    let m0 = matrix[0].length
    let m = matrix.length
    for (let i = 0; i < m; i++) {
        for (let j = i + 1; j < m0; j++) {
            let temp = matrix[i][j]
            matrix[i][j] = matrix[j][i]
            matrix[j][i] = temp
        }
    }
    for (let i = 0; i < m; i++) {
        let k = 0, j = m0 - 1
        while (k < j) {
            let temp = matrix[i][k]
            matrix[i][k] = matrix[i][j]
            matrix[i][j] = temp
            k++
            j--
        }
    }
    return matrix
}
const spiralMatrix = (matrix) => {
    const result = [];
    let top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1;

    while (top <= bottom && left <= right) {
        // Traverse from left to right
        for (let i = left; i <= right; i++) {
            result.push(matrix[top][i]);
        }
        top++;

        // Traverse downwards
        for (let i = top; i <= bottom; i++) {
            result.push(matrix[i][right]);
        }
        right--;

        if (top <= bottom) {
            // Traverse from right to left
            for (let i = right; i >= left; i--) {
                result.push(matrix[bottom][i]);
            }
            bottom--;
        }

        if (left <= right) {
            // Traverse upwards
            for (let i = bottom; i >= top; i--) {
                result.push(matrix[i][left]);
            }
            left++;
        }
    }
    return result;
}