Obtenha todas as combinações de N elementos do array multidimensional

Estou tentando escrever um algoritmo para obter todas as combinações possíveis de N elementos dentro de uma matriz multidimensional de elementos M.

Algo como:

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

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

getCombinations(arr,n);

Isso deve produzir:

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

O número de elementos dentro da matriz pode variar, a única coisa definida é o número de elementos das combinações.

A ordem não importa, mas você não pode repetir, quero dizer["A","B"] == ["B","A"], então o segundo não é levado em consideração.

Qualquer ajuda?

questionAnswers(2)

yourAnswerToTheQuestion