Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 最简单的手工排列和组合_Javascript_Arrays_Algorithm_Combinations_Permutation - Fatal编程技术网

Javascript 最简单的手工排列和组合

Javascript 最简单的手工排列和组合,javascript,arrays,algorithm,combinations,permutation,Javascript,Arrays,Algorithm,Combinations,Permutation,假设我有一个简单的数组[“苹果”、“香蕉”、“柠檬”、“芒果”] 现在,这个数组的最简单的手动排列,比如选择3,重复是: let数组=[“苹果”、“香蕉”、“柠檬”、“芒果”]; for(设i=0;i

假设我有一个简单的数组
[“苹果”、“香蕉”、“柠檬”、“芒果”]

现在,这个数组的最简单的手动排列,比如选择3,重复是:

let数组=[“苹果”、“香蕉”、“柠檬”、“芒果”];
for(设i=0;i
类似地,现在将此组合,选择3,不重复为:

let数组=[“苹果”、“香蕉”、“柠檬”、“芒果”];
for(设i=0;i
现在我想知道,是否有类似的简单手动方法来生成:

  • 无重复排列
  • 重复组合

基本上是最简单的方法,就像上面的例子,无需递归或复杂迭代-生成其他两个变量的类似方法。

对于与重复的组合,您只需从
i
而不是
i+1
开始第二个循环,从
j
而不是
j+1
开始第三个循环。
+1
基本上是禁止重复的

因为排列有点烦人。。。对于您展示的小案例,您可以明确检查重复:

for (let i=0; i<n; i++) {
    for (let j=0; j<n; j++) {
       if (i !== j) {
           for (let k=0; k<n; k++) {
               if (i !== k && j !== k) {
                   ...
               }
           }
       }
    }
}

for(设i=0;i根据什么标准定义“简单”?这似乎是一个非常广泛的问题。认知上很简单。使用上面例子中的simple for循环,没有递归或复杂的迭代。本质上,如果有类似的方法来生成前面提到的其他两个,使用类似的方法。对不起,我不太明白你的意思。还不够清楚吗?太棒了!谢谢,没错我在寻找的是——想知道是否有可能将其提升为一个函数,该函数生成这些作为choose
n
的算法。