📜  如何使用 javascript 查找数组的所有排列(1)

📅  最后修改于: 2023-12-03 15:38:02.688000             🧑  作者: Mango

如何使用 JavaScript 查找数组的所有排列

在编程过程中,我们经常需要对数组进行重新排序或排列。本文介绍如何使用 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 查找数组的所有排列。我们使用递归和循环两种方法来实现这个目标。递归方法是最常见的方法,但我们也了解了一种不太常用但仍然有用的循环方法。