const matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
  ];

  const lists = (arg: number[][]): number[][] => {
    let newArr: number[][] = [];
    arg.forEach((x) => {
      const length = x.length;
      const mapping = (internalArr: number[], index: number) => {
        if (!newArr[index]) {
          newArr.push([internalArr[index]]);
        } else {
          newArr[index].push(internalArr[index]);
        }
        if (index < length - 1) {
          mapping(internalArr, index + 1);
        }
      };
      mapping(x, 0);
    });
    return newArr;
  };

  console.log(lists([...matrix]));


이해하기 쉽고 편합니다.