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