JSFiddle - React, Tailwind, and code Playground
by Steven Senkus
JavaScript
function cartesian(...args) {
var r = [],
max = args.length - 1;
function helper(arr, i) {
for (var j = 0, l = args[i].length; j < l; j++) {
var a = arr.slice(0); // clone arr
a.push(args[i][j]);
if (i == max)
r.push(a);
else
helper(a, i + 1);
}
}
helper([], 0);
return r;
}
const allPerms = cartesian(['short', 'medium', 'long'], ['arms', 'chest', 'legs'], ['easy', 'difficult']);
let result = allPerms.map(p => {
return `${p[0]}-${p[1]}-${p[2]}`
})
console.log(JSON.stringify(result, null, 4));