Amit DhamuSoftware Engineer

The Cartesian Product mathematical equation allows us to produce a series of unique combinations based on a series of inputs.

Given we have an array of arrays as below

`const sets: number[][] = [[1, 2], [3, 4, 5], [6]]`

We can leverage a function like below to get us all combinations from those inputs.

```
const cartesianProduct = (sets: number[][]): number[][] =>
sets.reduce<number[][]>(
(results, ids) =>
results
.map(result => ids.map(id => [...result, id]))
.reduce((nested, result) => [...nested, ...result]),
[[]]
)
```

Output

```
cartesianProduct(sets)
// Outputs
[
[1, 3, 6],
[1, 4, 6],
[1, 5, 6],
[2, 3, 6],
[2, 4, 6],
[2, 5, 6],
]
```