JavaScript 对二维数组进行转置

JavaScript 对二维数组进行转置

给定一个二维数组(矩阵),任务是使用JavaScript获取矩阵的转置。

我们可以使用以下方法来实现:

  • 使用 array.map()
  • 使用嵌套循环
  • 使用 reduce() 方法

方法1: 使用 array.map()

  • 将一个二维数组存入变量中。
  • 显示二维数组(矩阵)的内容。
  • 调用map()方法,该方法为数组中的每个元素提供一个回调函数,按顺序返回新数组(原数组的转置)。

示例: 该示例使用了 array.map() 方法来获取数组的转置。

let array = [
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
];
 
console.log("[ [ " + array[0] 
    + " ] ], [ [ " + array[1] 
    + " ] ], [ [ " + array[2] 
    + " ] ]");
 
function transpose(mat) {
    for (let i = 0; i < mat.length; i++) {
        for (let 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]));
 
    console.log("[ [ " + array[0] 
        + " ] ], [ [ " + array[1] 
        + " ] ], [ [ " + array[2] 
        + " ] ]");
} 
 
gfg_Run();
JavaScript

输出

[ [ 1,1,1 ] ], [ [ 2,2,2 ] ], [ [ 3,3,3 ] ]
[ [ 1,2,3 ] ], [ [ 1,2,3 ] ], [ [ 1,2,3 ] ]
JavaScript

方法2:使用嵌套循环

  • 使用嵌套循环
  • 将一个二维数组存储到一个变量中。
  • 用 respect to the diagonal of the array 的镜像图像替换数组中的每个元素。

示例: 此示例创建一个函数,将每个元素替换为其镜像图像,以获取数组的转置。

let array = [
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
];
 
console.log("[ [ " + array[0] 
    + " ] ], [ [ " + array[1] 
    + " ] ], [ [ " + array[2] 
    + " ] ]");
 
function transpose(mat) {
    for (let i = 0; i < mat.length; i++) {
        for (let 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);
    console.log("[ [ " + array[0] 
        + " ] ], [ [ " + array[1] 
        + " ] ], [ [ " + array[2] 
        + " ] ]");
}
 
gfg_Run();
JavaScript

输出

[ [ 1,1,1 ] ], [ [ 2,2,2 ] ], [ [ 3,3,3 ] ]
[ [ 1,2,3 ] ], [ [ 1,2,3 ] ], [ [ 1,2,3 ] ]
JavaScript

方法3:使用reduce()方法

我们可以使用reduce()方法和map()来进行数组的转置。

示例:

let array = [
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
];
let newArr = array.reduce((prev, next) => 
             next.map((item, i) =>
    (prev[i] || []).concat(next[i])
), []); 
console.log(newArr);
JavaScript

输出

[ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ]
JavaScript

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册