目录
一、使用for循环
二维数组中的行和列交换,原来数组的行来作为交换后的列也就是交换后的二维数组的长度,原来数组的列,作为交换后的行
const LIST = [
[12, 45, 3],
[3, 9, 4],
];
/**建议使用for循环,运行效率最高相对于map和foreach不需要反复调用回调函数 */
/**交换后的二维数组长度 交换后有三个数组,每个数组中有两个元素 */
const COLS = LIST[0].length;
/**交换后的二维数组中的数组元素的长度 */
const ROWS = LIST.length;
let NEW_LIST = Array(COLS).fill([]);
console.log(NEW_LIST[0] === NEW_LIST[1]);//true
console.log(NEW_LIST[1] === NEW_LIST[2]);//true
for (let i = 0; i < COLS; i++) {
/**需要记住!!!使用fill创建空数组,所有空数组指向一个地址,所以如果修改了其中一个其他都会改变 */
// 每次外层循环必须为新行,创建独立的内存空间,否则每一次都使用的相同地址,会导致结果为最后一次循环的结果
NEW_LIST[i] = [];
for (let j = 0; j < ROWS; j++) {
NEW_LIST[i][j] = LIST[j][i];
}
}
二、使用map方法
const LIST = [
[12, 45, 3],
[3, 9, 4],
];
let NEW_LIST = Array(COLS).fill([]);
//交换后的数组个数NEW_LIST
//给每个空数组传值,也就是交换后对应的列
const CHANGE_LIST = NEW_LIST.map((item, i) => LIST.map((item) => item[i]));