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

JavaScript에서 배열의 모든 조합을 구하는 방법

JavaScript에는 배열 조합을 구하는 내장 메서드가 따로 없기 때문에, 직접 함수를 작성해야 합니다. 이 글에서는 제너레이터(Generator) 함수를 활용해 배열 요소의 모든 조합을 생성하는 방법을 살펴보겠습니다.

예제

다음은 재귀 호출과 yield* 문법을 사용한 조합 생성 코드입니다.

function combination(values) {
   function * combinationRepeat(size, v) {
      if (size)
         for (var chr of values)
      yield * combinationRepeat(size - 1, v + chr);
      else yield v;
   }
   return [...combinationRepeat(values.length, "")];
}
var output = combination([4,5]);
console.log(output);

코드 동작 원리

내부 함수 combinationRepeat는 제너레이터 함수로 선언되었습니다. 크기(size)가 남아 있는 동안 배열의 각 요소를 현재 값(v) 뒤에 붙여가며 자기 자신을 재귀적으로 호출하고, 크기가 0이 되면 완성된 문자열을 yield로 반환합니다. 최종적으로 스프레드 연산자(...)를 통해 제너레이터가 생성한 모든 값을 배열로 변환하여 반환합니다.

프로그램 실행 방법

위 프로그램을 실행하려면 Node.js 환경에서 아래 명령어를 입력합니다.

node fileName.js

여기서는 파일 이름을 demo306.js로 저장했습니다.

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

PS C:\Users\Amit\javascript-code> node demo306.js
[ '44', '45', '54', '55' ]

출력 결과를 보면 입력 배열 [4, 5]의 길이와 같은 크기(2자리)의 중복 허용 조합인 44, 45, 54, 55가 모두 생성된 것을 확인할 수 있습니다.