Holen Sie sich alle Kombinationen von N Elementen eines mehrdimensionalen Arrays

Ich versuche, einen Algorithmus zu schreiben, um alle möglichen Kombinationen von N Elementen in einem mehrdimensionalen Array von M Elementen zu erhalten.

So etwas wie:

function getCombinations(arr, n){
  ...
}

var arr = [ ["A"],["B","C"],["D","E"]];
var n = 2;

getCombinations(arr,n);

Dies sollte ergeben:

[
["A","B"],["A","C"],["A","D"],["A","E"],
["B","D"],["B","E"],
["C","D"],["C","E"]
]

Die Anzahl der Elemente innerhalb des Arrays kann variieren. Das Einzige, was festgelegt wird, ist die Anzahl der Elemente der Kombinationen.

Die Reihenfolge spielt keine Rolle, aber Sie können nicht wiederholen, meine ich["A","B"] == ["B","A"], so dass die zweite nicht berücksichtigt wird.

Irgendeine Hilfe?