JSFiddle - React, Tailwind, and code Playground
by Yuriy Tarabanko
JavaScript
function copy(to, from) {
Object.keys(from).forEach(function(key){
to[key] = from[key];
});
return to;
}
function permutate(data, memo) {
var options, name;
if(data.length ) {
options = data.shift();
for(name in options){
options = options[name];
}
memo = memo || [{}];
return permutate(data, options.reduce(function(all, item){
return all.concat(memo.map(function(curr){
var result = copy({}, curr);
result[name] = item;
return result;
}));
}, []));
}
return memo;
}
function chars(str) {
return str.split('');
}
console.log(permutate([{abc: chars('abc')}, {'1234': chars('1234')}, {xyz: chars('xyz')}]));