1👍
✅
Look at this, might be helpful:
const input_array = [
["black", "blue"],
["large", "medium"],
["a", "b", "c"]
//... is it dynamic can be added many rows
];
const mmc = input_array.reduce((e, r) => e * r.length, 1);
const finallist = input_array.map((x,i)=>({index:i,arr:x})).reduce((e, r) => {
for (var u = 0; u < mmc; u++) e[u] && (!r.arr.some(r => e[u].includes(r)) || e[u].length <= r.index) ? e[u].push(r.arr[u % r.arr.length]) : e.push([r.arr[u % r.arr.length]]);
return e.sort(), e
}, []);
Careful! This might break your browser in large matrix scales.
1👍
You can do something like this:
const input_array = [
["black", "blue"],
["large", "medium"],
["a", "b", "c"]
]
const getCompinations = array =>
array.reduce((v, b) =>
v.reduce((r, g) => [...r, ...b.map(w => [].concat(g, w))], [])
)
console.log(getCompinations(input_array))
Source:stackexchange.com