二维数组交换行和列

目录

一、使用for循环

二、使用map方法 


一、使用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]));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值