JavaScript의 순열
정수 배열에 대한 순열을 생성하는 작업에 직면했을 때 간단한 접근 방식에는 재귀 알고리즘이 포함됩니다. 문자열을 처리하도록 설계된 알고리즘 중 하나가 주어진 코드 조각에 표시됩니다. 그러나 이 알고리즘을 정수 배열과 함께 작동하도록 적용하려고 하면 다양한 데이터 유형에 대해 메서드가 작동하는 방식의 차이로 인해 문제가 발생합니다.
이 문제를 해결하려면 알고리즘의 수정된 버전이 필요합니다. 이는 정수의 특정 동작을 고려합니다. 아래 제시된 한 가지 우아한 솔루션은 다음 고려 사항을 통합합니다.
function permutator(inputArr) { var results = []; function permute(arr, memo) { var cur, memo = memo || []; for (var i = 0; i < arr.length; i++) { cur = arr.splice(i, 1); if (arr.length === 0) { results.push(memo.concat(cur)); } permute(arr.slice(), memo.concat(cur)); arr.splice(i, 0, cur[0]); } return results; } return permute(inputArr); }
이 알고리즘은 입력 배열의 복사본에서 작동하여 원본 배열이 변경되지 않도록 보장합니다. 가능한 모든 조합을 재귀적으로 탐색하고 배열 배열에 순열을 저장합니다.
또는 이 알고리즘의 ES6(2015) 버전도 사용할 수 있습니다.
const permutator = (inputArr) => { let result = []; const permute = (arr, m = []) => { if (arr.length === 0) { result.push(m) } else { for (let i = 0; i < arr.length; i++) { let curr = arr.slice(); let next = curr.splice(i, 1); permute(curr.slice(), m.concat(next)) } } } permute(inputArr) return result; }
이 버전은 화살표를 사용합니다. 보다 간결한 구문을 위한 함수 및 기본 매개변수 값. 기능은 동일하게 유지되며 제공된 배열에 대한 순열을 생성합니다.
위 내용은 JavaScript에서 정수 배열의 순열을 어떻게 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!