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

JavaScript로 두 배열의 값을 번갈아 가며 병합하는 방법

두 개의 배열을 입력받아 첫 번째 배열과 두 번째 배열의 값이 번갈아 교차되어 배치된 새로운 배열을 반환하는 함수를 작성해야 한다고 가정해 보겠습니다.

이 문제는 두 배열을 동시에 순회하면서 각 배열에서 값을 하나씩 번갈아 가져와 새로운 배열에 순서대로 추가하는 방식으로 해결할 수 있습니다. while 루프와 두 개의 인덱스 변수를 활용하면 간단하게 구현할 수 있습니다.

예제 코드

const arr1 = [34, 21, 2, 56, 17];
const arr2 = [12, 86, 1, 54, 28];
let run = 0, first = 0, second = 0;
const newArr = [];
while(run < arr1.length + arr2.length){
   if(first > second){
      newArr[run] = arr2[second];
      second++;
   }else{
      newArr[run] = arr1[first];
      first++;
   }
   run++;
};
console.log(newArr);

코드 동작 원리

위 코드의 핵심 로직은 다음과 같습니다.

  • run: 전체 반복 횟수를 추적하는 카운터로, 두 배열 길이의 합만큼 반복됩니다.
  • first: 첫 번째 배열(arr1)의 현재 인덱스를 가리킵니다.
  • second: 두 번째 배열(arr2)의 현재 인덱스를 가리킵니다.
  • first가 second보다 클 경우 두 번째 배열의 값을, 그렇지 않으면 첫 번째 배열의 값을 새 배열에 추가합니다. 이 조건 비교 덕분에 두 배열의 값이 자동으로 번갈아 배치됩니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 출력 결과가 나타납니다.

[
   34, 12, 21, 86, 2,
   1, 56, 54, 17, 28
]

출력 결과를 보면 첫 번째 배열의 값(34, 21, 2, 56, 17)과 두 번째 배열의 값(12, 86, 1, 54, 28)이 정확히 한 번씩 교차하여 병합된 것을 확인할 수 있습니다. 이 방식은 두 배열의 길이가 같지 않은 경우에도 while 조건문이 전체 길이를 기준으로 동작하기 때문에 안전하게 처리됩니다.