JavaScript算法,提供每种可能的项目组合,并将它们存储在数组中

JavaScript algorithm to give every possible combination of items and store them in an array

本文关键字:组合 存储 数组 项目组 项目 算法 JavaScript      更新时间:2023-09-26

我正在寻找一种很好的方法来制作一个解决这个问题的程序:

首先给出一个具有字符串值的数组:

    var array1 = ["a", "b", "c", "d"]

接下来,我想将字符串值的每一个可能的组合(顺序)存储在新的数组中

例如:

    combo1 = ["a", "b", "d", "c"]
    combo2 = ["a", "c", "b", "d"]
    combo3 = [...etc.]

该程序还需要能够对大数组执行此操作。例如,第一个数组(array1)中最多有20个项目。因此,它需要用一个函数自动完成创建"组合数组"的所有工作。

解决这个问题的好方法是什么?最好使用JavaScript,但我愿意在外部语言中听到它。

正如你可能已经猜到的,在编程方面,我是一个相当初级的人。我已经掌握了基本知识,现在正试图为一个项目编写一个程序。请提前帮助并感谢您!

在haskell中,您可以使用排列

 permutations "abc" == ["abc","bac","cba","bca","cab","acb"]

在JavaScript中,您需要自己编写排列函数:

function permutations(list) {
    if (list.length <= 1)
        return list.slice();
    var result = []
      , i = 0
      , resultRest
      , current
      , rest
      , j;
    for(; i<list.length; i++) {
        rest = list.slice(); // make a copy of list
        current = rest.splice(i, 1);
        permutationsRest = permutations(rest);
        for(j=0; j<permutationsRest.length; j++) {
            result.push(current.concat(permutationsRest[j]));
        }
   }
   return result;
}
permutations(['a', 'b', 'c'])
> [ [ 'a', 'b', 'c' ],
    [ 'a', 'c', 'b' ],
    [ 'b', 'a', 'c' ],
    [ 'b', 'c', 'a' ],
    [ 'c', 'a', 'b' ],
    [ 'c', 'b', 'a' ] ]

然而,如果你的投入很大,这将需要一段时间。也许你应该考虑另一种方法。