Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 2차원 배열의 전치(Transpose) 구현하기


JavaScript로 2차원 배열의 전치(Transpose) 구현하기

이번 글에서는 2차원 배열을 인자로 받아 그 전치(transpose) 배열을 반환하는 JavaScript 함수를 작성해 보겠습니다.

여기서 전치란 행렬의 행과 열을 서로 맞바꾸는 연산을 의미합니다. 즉, 원본 배열의 각 행은 결과 배열에서 열로 변환되고, 각 열은 행으로 변환됩니다.

방법 1: Array.prototype.forEach() 사용

forEach() 메서드를 이중으로 사용하여 바깥 배열과 내부 배열을 순회하면서, 각 요소의 위치를 행과 열 기준으로 뒤바꿔 새로운 배열에 담는 방식입니다.

const arr = [
   [0, 1],
   [2, 3],
   [4, 5]
];

const transpose = arr => {
   const res = [];
   arr.forEach((el, ind) => {
      el.forEach((elm, index) => {
         res[index] = res[index] || [];
         res[index][ind] = elm;

      });
   });
   return res;
};
console.log(transpose(arr));

방법 2: Array.prototype.reduce() 사용

reduce() 메서드를 활용하면 누적값(acc)을 이용해 더 함수형 프로그래밍 스타일로 전치 배열을 만들 수 있습니다. 내부 동작 원리는 forEach() 버전과 동일합니다.

const arr = [
   [0, 1],
   [2, 3],
   [4, 5]
];
const transpose = arr => {

   let res = [];
   res = arr.reduce((acc, val, ind) => {
      val.forEach((el, index) => {

         acc[index] = acc[index] || [];
         acc[index][ind] = el;

      });
      return acc;
   }, [])
   return res;
};

console.log(transpose(arr));

위 두 가지 방법 모두 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.

[ [ 0, 2, 4 ], [ 1, 3, 5 ] ]