2017-12-01 4 views
0

Ich bin derzeit mit diesem Code ein Array von jeder Kombination möglich zu machen, von Zahlen in Gruppen von 10 aus einem Array:Wann werden die Kombinationen an das Array angehängt?

var Util = function() { 
}; 

Util.getCombinations = function(array, size, start, initialStuff, output) { 
    if (initialStuff.length >= size) { 
     output.push(initialStuff); 
    } else { 
     var i; 
     for (i = start; i < array.length; ++i) { 
      Util.getCombinations(array, size, i + 1, initialStuff.concat(array[i]), output); 
     } 
    } 
} 

Util.getAllPossibleCombinations = function(array, size, output) { 
    Util.getCombinations(array, size, 0, [], output); 
} 

Zum Beispiel könnte meine Anordnung von Zahlen [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] sein und es würde mir diese Möglichkeit geben Kombinationen: nur zu tun ist, hängen sie/Push/hinzufügen Kombinationen meiner Array

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11] 
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11] 
[1, 2, 3, 4, 5, 6, 7, 9, 10, 11] 
[1, 2, 3, 4, 5, 6, 8, 9, 10, 11] 
[1, 2, 3, 4, 5, 7, 8, 9, 10, 11] 
[1, 2, 3, 4, 6, 7, 8, 9, 10, 11] 
[1, 2, 3, 5, 6, 7, 8, 9, 10, 11] 
[1, 2, 4, 5, 6, 7, 8, 9, 10, 11] 
[1, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 

Was ich versuche, wenn sie eine bestimmte Gesamt haben. Ich bin etwas neu in Javascript und frage mich, ob jemand mir sagen könnte, wo im Code die Kombination bestimmt und zu meinem Array (Ausgabe) hinzugefügt wird.

Danke!

+0

wenn 'initialStuff.length> = Größe '... es ist genau dort (vermutlich) ** Ihr ** Code –

Antwort

1

Die Kombination des Ergebnisses durch diese Linien hinzugefügt:

if (initialStuff.length >= size) { 
    output.push(initialStuff); 
} 

Wenn Sie andere Kriterien hinzufügen möchten, können Sie es dort setzen:

if (initialStuff.length >= size) { 
    if (someOtherTest(initialStuff)) { 
     output.push(initialStuff); 
    } 
} 

Beachten Sie, dass Sie tun nicht wollen die beiden Tests zu

if (initialStuff.length >= size && someOtherTest(initialStuff)) { 
    output.push(initialStuff); 
} 

Dies ist zu kombinieren Ursache Die else-Klausel, die Schleifen und Recurses, sollte nur ausgeführt werden, wenn der Längentest fehlschlägt, sollte es nicht von den anderen Kriterien abhängen.

Verwandte Themen