Transponer una array bidimensional (2D) en JavaScript

Dada una array 2D (array) y la tarea es obtener la transposición de la array usando JavaScript.

Enfoque 1: 

  • Almacene una array 2D en variable.
  • Muestre el contenido de la array 2D (array).
  • Llame al método map() que proporciona una función de devolución de llamada una sola vez para cada elemento en una array, manteniendo el orden y devuelve una nueva array (transposición de la array original) de los resultados.

Ejemplo: Este ejemplo usa el método array.map() para obtener la transposición de la array.  

HTML

<!DOCTYPE HTML>
<html>
    <head>
        <title>
            Transpose of a 2D array
        </title>
    </head>
 
    <body style = "text-align:center;">
     
        <h1 style = "color:green;" >
            GeeksForGeeks
        </h1>
     
        <p id = "GFG_UP" style =
            "font-size: 16px; font-family: sans-serif; font-weight: bold;">    
        </p>
 
         
        <button onclick = "gfg_Run()">
            Click here
        </button>
         
        <p id = "GFG_DOWN" style =
            "color:green; font-size: 30px; font-weight: bold;">
        </p>
 
         
        <script>
            var el_up = document.getElementById("GFG_UP");
            var el_down = document.getElementById("GFG_DOWN");
             
            var array = [
                            [1, 1, 1],
                            [2, 2, 2],
                            [3, 3, 3],
                        ];
             
            el_up.innerHTML = "[ [ " + array[0] + " ] ], [ [ "
                             + array[1] + " ] ], [ [ " + array[2] + " ] ]";
             
            function transpose(mat) {
                for (var i = 0; i < mat.length; i++) {
                    for (var j = 0; j < i; j++) {
                        const tmp = mat[i][j];
                        mat[i][j] = mat[j][i];
                        mat[j][i] = tmp;
                    }
                }
            }
             
            function gfg_Run() {
                array = array[0].map((col, i) => array.map(row => row[i]));
                 
                el_down.innerHTML = "[ [ " + array[0] + " ] ], [ [ "
                        + array[1] + " ] ], [ [ " + array[2] + " ] ]";
            }        
        </script>
    </body>
</html>                   

Producción: 

  • Antes de hacer clic en el botón: 
     

  • Después de hacer clic en el botón: 
     

Enfoque 2:  

  • Almacene una array 2D en variable.
  • Reemplace cada elemento de la array por su imagen especular con respecto a la diagonal de la array.

Ejemplo: este ejemplo crea una función que reemplaza cada elemento por su imagen especular para obtener la transposición de la array.  

HTML

<!DOCTYPE HTML>
<html>
    <head>
        <title>
            Transposing a 2D array
        </title>
    </head>
     
    <body style = "text-align:center;">
         
        <h1 style = "color:green;" >
            GeeksForGeeks
        </h1>
         
        <p id = "GFG_UP" style =
            "font-size: 16px; font-family: sans-serif; font-weight: bold;">    
        </p>
 
         
        <button onclick = "gfg_Run()">
            Click here
        </button>
         
        <p id = "GFG_DOWN" style =
            "color:green; font-size: 30px; font-weight: bold;">
        </p>
 
         
        <script>
            var el_up = document.getElementById("GFG_UP");
            var el_down = document.getElementById("GFG_DOWN");
             
            var array = [
                            [1, 1, 1],
                            [2, 2, 2],
                            [3, 3, 3],
                        ];
             
            el_up.innerHTML = "[ [ " + array[0] + " ] ], [ [ "
                    + array[1] + " ] ], [ [ " + array[2] + " ] ]";
             
            function transpose(mat) {
                for (var i = 0; i < mat.length; i++) {
                    for (var j = 0; j < i; j++) {
                        const tmp = mat[i][j];
                        mat[i][j] = mat[j][i];
                        mat[j][i] = tmp;
                    }
                }
            }
             
            function gfg_Run() {
                transpose(array);
                el_down.innerHTML = "[ [ " + array[0] + " ] ], [ [ "
                        + array[1] + " ] ], [ [ " + array[2] + " ] ]";
            }        
        </script>
    </body>
</html>                   

Producción: 

  • Antes de hacer clic en el botón: 
     

  • Después de hacer clic en el botón: 
     

Publicación traducida automáticamente

Artículo escrito por PranchalKatiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *