2017-08-28 1 views
0

Ich versuche, ein Array von Zeichenfolgen zu erstellen und die Möglichkeiten durch die Länge der Array-Zeichenfolge zu erzeugen. Zum Beispiel:Erstellen eines Arrays ohne Hard-Codierung

var someStr = ["a","b","c","d"]; 

//I want to produce this outcome 

a 
ab 
abc 
abcd 
b 
bc 
bcd 
c 
cd 
d 

Ich weiß, ich kann die Anzahl der Möglichkeiten für bekommen „a“ nur auf diese Weise:

var numCombinations = 0; 
var comboString = ''; 
var outcome = []; 

for(var i = 0; i < someStr.length; i++){ 

    comboString += someStr[i]; 

    outcome[i] = comboString; 

    numCombinations += i; //# of combinations from above 

} 

Aber wie würde ich mit diesen Variablen für die linke Seite über Möglichkeiten weiter ? Ich habe gedacht, verschachtelte For-Schleifen immer wieder zu erstellen, aber das würde schließlich zu der (n) Länge mit Hard-Codierung führen. Würde es irgendwelche Methoden geben, um dies zu schaffen und alle Möglichkeiten auf die (n) te Länge zu speichern?

+0

@Amadan Oh sorry, ich kann es bearbeiten wird, yup Ich wollte [ "a", "b", "c", "d"] – Zulu

+0

Mögliche Duplikat [So finden alle Teilmengen einer Menge in JavaScript?] (https://stackoverflow.com/questions/42773836/how-to-find-all-subsets-of-a-set-in-javascript) –

Antwort

3

Hoffe diese Hilfe.

function getComboStringListFromIdx(arr, idx){ 
    var result = []; 
    var comboString = ''; 
    for(var i=idx; i<arr.length; i++){ 
     comboString += arr[i]; 
     result.push(comboString); 
    } 
    return result; 
} 

var someStr = ['a','b','c','d']; 

var outCome = []; 
for(var i = 0; i<someStr.length; i++){ 
    outCome = outCome.concat(getComboStringListFromIdx(someStr, i)); 
} 
+0

Du bist ein Genie, ich liebe dich – Zulu

1

Ich werde auch verschachtelte For-Schleife verwenden! One ist normal looping und andere ist zu überspringen less than aktuellen Index von der ersten Schleife !!

+0

Wow, das funktioniert auch! Danke " – Zulu

1

Diese Lösung verwendet eine verschachtelte for-Schleife und überspringt die Verkettung für das erste Element der geschachtelten for-Schleife.

var arr = ["a","b","c","d"]; 
for(var i=0;i<arr.length;i++){ 
    var str = arr[i]; 
    for(var j=i;j<arr.length;j++){ 
    if(i!==j) 
     str+=arr[j]; 
    console.log(str); 
    } 
} 

https://jsfiddle.net/fmy539tj/

+0

Wow, ich habe es nie so gedacht, brilliant !! Ty! – Zulu

Verwandte Themen