소개
여러 배열의 요소를 결합하면 수많은 조합이 생성될 수 있습니다. , 이는 통계 분석이나 조합 문제에 필수적인 경우가 많습니다. 이 기사에서는 각각 M 요소를 포함하는 N 배열에서 가능한 모든 조합을 생성하는 JavaScript의 포괄적인 솔루션을 제시합니다.
재귀 접근 방식
제공된 솔루션은 재귀 도우미 기능을 사용하여 조합을 구성합니다. 점차적으로. 이 함수는 결과 조합의 요소를 포함하여 각 배열을 반복합니다. 현재 배열이 마지막 배열이면 완성된 조합이 결과 배열에 추가됩니다. 그렇지 않으면 함수는 업데이트된 조합으로 반복되어 다음 배열로 진행됩니다.
구현
function cartesian(...args) { var r = [], max = args.length - 1; function helper(arr, i) { for (var j = 0, l = args[i].length; j < l; j++) { var a = arr.slice(0); // clone arr a.push(args[i][j]); if (i == max) r.push(a); else helper(a, i + 1); } } helper([], 0); return r; }
사용법
생성하려면 배열 목록의 조합을 사용하여 배열을 데카르트 함수의 인수로 전달합니다. function.
cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
결과는 가능한 모든 조합을 포함하는 배열이 됩니다.
[ [0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [0, 2, 0], [0, 2, 1], [0, 2, 2], // ... ]
참고
배열의 배열을 전달하려는 경우 개별 인수 대신 함수 시그니처를 function cartesian(args)으로 수정할 수 있습니다.
위 내용은 JavaScript에서 각각 M개의 요소가 있는 N개의 배열에서 가능한 모든 조합을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!