I have an array like this
JavaScript
x
7
1
const input_array= [
2
["black", "blue"],
3
["large", "medium"],
4
["a", "b", "c"]
5
//... is it dynamic can be added many rows
6
];
7
How would I get an array like this :
JavaScript
1
18
18
1
const finallist = [
2
["black", "large", "a"],
3
["black", "large", "b"],
4
["black", "large", "c"],
5
6
["black", "medium", "a"],
7
["black", "medium", "b"],
8
["black", "medium", "c"],
9
10
["blue", "large", "a"],
11
["blue", "large", "b"],
12
["blue", "large", "c"],
13
14
["blue", "medium", "a"],
15
["blue", "medium", "b"],
16
["blue", "medium", "c"],
17
]
18
Please Remember input_array is dynamic
Please advice me how can I do this
Advertisement
Answer
Look at this, might be helpful:
JavaScript
1
12
12
1
const input_array = [
2
["black", "blue"],
3
["large", "medium"],
4
["a", "b", "c"]
5
//... is it dynamic can be added many rows
6
];
7
const mmc = input_array.reduce((e, r) => e * r.length, 1);
8
const finallist = input_array.map((x,i)=>({index:i,arr:x})).reduce((e, r) => {
9
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]]);
10
return e.sort(), e
11
}, []);
12
Careful! This might break your browser in large matrix scales.