> 文档中心 > [小笔记]TypeScript/JavaScript数组转置

[小笔记]TypeScript/JavaScript数组转置

[小笔记]TypeScript/JavaScript数组转置


CSDN:jcLee95

邮箱:291148484@163.com

在代数中,矩阵一个是一个方形数组,它由若干个长度相等的子数组构成。所谓转置指的是将一个矩阵中元素的行与列进行互换,就像将将一个矩形沿着对角线翻转一样,如:

[[1,2,3], [4,5,6], [7,8,9]]

翻转后:

[[1,4,7] [2,5,8] [3,6,9]]

TypeScript

// 转置一个矩阵型数组export const T = (ary: any[])=>{  /*   * 转置一个二维矩阵的本质就是改变其子数组的结构,   * 即将原矩阵的行与列在结构上进行互换:   *  - 新子数组的个数为原任意一个子数组的长度;   *  - 新任意一个子数组的元素皆依次取自于原每一个子数组。   * 需要一个二层循环:   *  - 内层循环构造一个子数组,即从原子数组逐个取出同位序元素;   *  - 外层循环收集所有子数组。   */  let ar = []     // 转置后的数组  for(let i=0; i<ary[0].length; i++){    let cd = []   // 某个新子数组    for(let j=0;j<ary.length;j++){      cd.push(ary[j][i])    }    ar.push(cd)  }  return ar}

JavaScript

// 转置一个矩阵型数组var T = function (ary) {    /*     * 转置一个二维矩阵的本质就是改变其子数组的结构,     * 即将原矩阵的行与列在结构上进行互换:     *  - 新子数组的个数为原任意一个子数组的长度;     *  - 新任意一个子数组的元素皆依次取自于原每一个子数组。     * 需要一个二层循环:     *  - 内层循环构造一个子数组,即从原子数组逐个取出同位序元素;     *  - 外层循环收集所有子数组。     */    var ar = []; // 转置后的数组    for (var i = 0; i < ary[0].length; i++) { var cd = []; // 某个新子数组 for (var j = 0; j < ary.length; j++) {     cd.push(ary[j][i]); } ar.push(cd);    }    return ar;};

用例

console.log(T(  [    [1,'2',3],    [4,5,6],    [7,['8'],9]  ]));

Out[]:

[ [ 1, 4, 7 ], [ '2', 5, [ '8' ] ], [ 3, 6, 9 ] ]