S
function f1(inp) {
let en = Object.entries(inp);
let keys = en.map(x => x[0])
let ls = en.map(x => x[1].length);
let total = ls.reduce((a,x) => a * x);
let ar = keys.map(_ => 0);
let al = keys.length;
let results = [];
for (let j = 0; j < total; j++) {
let temp = {}
for (let i = 0; i < al; i++) {
if (ar[i] === ls[i]) {
ar[i] = 0;
if (i < al - 1) {
ar[i + 1]++;
}
}
temp[keys[i]] = inp[keys[i]][ar[i]];
}
results.push(temp);
ar[0]++;
}
return results;
}
Можно было изначальные инициализации одним циклом по ключам сделать, но оно погоды особо не делает, плюс-минус пара микросекунд
upd: поправил очепятку