다양한 길이의 배열 집합에서 가져온 요소의 가능한 모든 조합을 생성하려면 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; }
이를 활용하려면 함수를 사용하려면 배열을 인수로 전달하기만 하면 됩니다.
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], ]
배열 배열의 경우 나머지 매개변수를 사용하는 대신 함수 서명을 함수 카르테시안(args)으로 조정합니다. 이 접근 방식을 사용하면 요소 개수가 다양한 배열을 처리할 수 있어 이러한 조합 문제에 대한 유연한 솔루션을 제공할 수 있습니다.
위 내용은 JavaScript에서 다양한 길이의 배열로부터 데카르트 곱을 효율적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!