📅  最后修改于: 2023-12-03 15:38:02.688000             🧑  作者: Mango
在编程过程中,我们经常需要对数组进行重新排序或排列。本文介绍如何使用 JavaScript 查找数组的所有排列。我们将通过递归和循环两种方法来实现这个目标。
这是最常见的方法。我们使用递归来创建数组的所有排列。
function permute(arr) {
if (arr.length <= 1) {
return [arr];
}
let result = [];
for (let i = 0; i < arr.length; i++) {
let rest = arr.slice(0, i).concat(arr.slice(i + 1));
let permutations = permute(rest);
for (let j = 0; j < permutations.length; j++) {
result.push([arr[i]].concat(permutations[j]));
}
}
return result;
}
使用方法:
let myArray = [1, 2, 3];
let myPermutations = permute(myArray);
console.log(myPermutations);
这将输出:
[
[1, 2, 3],
[1, 3, 2],
[2, 1, 3],
[2, 3, 1],
[3, 1, 2],
[3, 2, 1]
]
循环方法不太常用,但它是一种很好的了解内部工作方式的方法。
function permute(arr) {
let permutations = [[]];
for (let i = 0; i < arr.length; i++) {
let current = arr[i];
let newPermutations = [];
for (let j = 0; j < permutations.length; j++) {
let oldPermutation = permutations[j];
for (let k = 0; k <= oldPermutation.length; k++) {
newPermutations.push([...oldPermutation.slice(0, k), current, ...oldPermutation.slice(k)]);
}
}
permutations = newPermutations;
}
return permutations;
}
使用方法:
let myArray = [1, 2, 3];
let myPermutations = permute(myArray);
console.log(myPermutations);
这将输出:
[
[1, 2, 3],
[2, 1, 3],
[2, 3, 1],
[1, 3, 2],
[3, 1, 2],
[3, 2, 1]
]
这篇文章介绍了如何使用 JavaScript 查找数组的所有排列。我们使用递归和循环两种方法来实现这个目标。递归方法是最常见的方法,但我们也了解了一种不太常用但仍然有用的循环方法。