JSFiddle - React, Tailwind, and code Playground

HTML

<div id='results'></div>

JavaScript

function getCombinations(arr, n)
{
    if(n == 1)
    {
        var ret = [];
        for(var i = 0; i < arr.length; i++)
        {
            for(var j = 0; j < arr[i].length; j++)
            {
                ret.push([arr[i][j]]);
            }
        }
        return ret;
    }
    else
    {
        var ret = [];
        for(var i = 0; i < arr.length; i++)
        {
            var elem = arr.shift();
            for(var j = 0; j < elem.length; j++)
            {
                var childperm = getCombinations(arr.slice(), n-1);
                for(var k = 0; k < childperm.length; k++)
                {
                    ret.push([elem[j]].concat(childperm[k]));
                }
            }
        }
        return ret;
    }
}

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

var results = getCombinations(arr.slice(),n);
document.getElementById("results").innerHTML = "[";
for(var i = 0; i < results.length; i++)
{
    document.getElementById("results").innerHTML += "[" + results[i] + "]";
}
document.getElementById("results").innerHTML += "]";