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

举报
jcLee95 发表于 2023/06/08 21:05:50 2023/06/08
【摘要】 [小笔记]TypeScript/JavaScript数组转置jcLee95:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343本文地址:https://blog.csdn.net/qq_28550263/article/details/118572718?spm=1001.2014.3001.5501邮箱:291148484@1...
[小笔记]TypeScript/JavaScript数组转置

jcLee95https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343

本文地址https://blog.csdn.net/qq_28550263/article/details/118572718?spm=1001.2014.3001.5501

邮箱: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 ] ]
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。