Consigue todas las combinaciones de N elementos de array multidimensional.

Estoy tratando de escribir un algoritmo para obtener todas las combinaciones posibles de elementos N dentro de una matriz multidimensional de elementos M.

Algo como:

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

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

getCombinations(arr,n);

Esto debería producir:

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

El número de elementos dentro de la matriz puede variar, lo único que se establece es el número de elementos de las combinaciones.

El orden no importa pero no se puede repetir, quiero decir["A","B"] == ["B","A"], por lo que el segundo no se toma en consideración.

¿Alguna ayuda?

Respuestas a la pregunta(2)

Su respuesta a la pregunta