19 lines
454 B
Markdown
19 lines
454 B
Markdown
---
|
|
title: cartesianProduct
|
|
tags: math,array,beginner
|
|
---
|
|
|
|
Calculates the cartesian product of two arrays.
|
|
|
|
- Use `Array.prototype.reduce()`, `Array.prototype.map()` and the spread operator (`...`) to generate all possible element pairs from the two arrays.
|
|
|
|
```js
|
|
const cartesianProduct = (a, b) =>
|
|
a.reduce((p, x) => [...p, ...b.map(y => [x, y])], []);
|
|
```
|
|
|
|
```js
|
|
cartesianProduct(['x', 'y'], [1, 2]);
|
|
// [['x', 1], ['x', 2], ['y', 1], ['y', 2]]
|
|
```
|