JSFiddle - React, Tailwind, and code Playground
JavaScript
function p(o){
var count=1;
var step_len=[];
for(var i=0;i<o.length;i++){
step_len[i]=count;
count*=o[i].length;
}
for(var i=0;i<count;i++){
var tmp=[];
for(var n=0;n<o.length;n++){
tmp.push(o[n][Math.floor(i/step_len[n])%o[n].length]);
}
console.log(tmp);
}
}
var o=[
[1,2],
['a','b'],
['foo','bar']
];
p(o);