uzyskać wszystkie kombinacje dla ciągu

Próbuję utworzyć funkcję w JavaScript, która podając łańcuch zwróci tablicę wszystkich możliwych kombinacji liter, z których każda zostanie użyta najwyżej raz, zaczynając od najkrótszej. np. w przypadku ciągu ABC powróci:

A
B
C
AB
AC
ABC

Mogę użyć pętli w ten sposób:

for(i=0; i<string.length; i++) {
   //add string[i]
}
for(i=0; i<string.length; i++) {
    for(a=i; a<string.length; a++) {
            //add string[i]+string[a]
    }
}
for(i=0; i<string.length; i++) {
    for(a=i; a<string.length; a++) {
        for(b=a; b<string.length; b++) {
            //add string[i]+string[a]+string[b]
        }
    }
}

Ale nie znam długości łańcucha, więc nie wiedziałbym, ile pętli użyć.

Jakieś pomysły?

Edycja: Nie pytam o permutacje, abc i acb nie powinny zostać zwrócone. Ważne jest również to, że najkrótszy jest pierwszy w tablicy.

To nie jest praca domowa. Jest to program do rozwiązania gry typu „light-out”.

questionAnswers(5)

yourAnswerToTheQuestion