flatMap or flatten

Luan Nico luannico27+es-discuss at gmail.com
Fri May 19 19:44:35 UTC 2017


I always surprise myself finding out there's no native way to flat an
array. I know it's easy to implement, but to increase legibility I propose
creating one of two options (either suffice, I believe):

  - `flatMap` : regular map, but flattens the array afterwards
  - `flatten` : just call on an array and get a new flattened array

Some examples usages of both:

With `flatMap`:
```
    const numbers = [12, 35];
    const divisors = numbers.flatMap(factors);
```

With `flatten`:
```
    const numbers = [12, 35];
    const divisors = numbers.map(factors).flatten();
```

Flattening an array is converting something like `[1, [2, 3], 4]` to `[1,
2, 3, 4]`.
There is also need to choose whether it's deep or shallow.

I suggest adding a `flatten` shallow method, as that would be useful in all
scenarios described.

Example implementation:

```
    Array.prototype.flatten = function () {
        return [].concat.apply([], this);
    };
```

What are your opinions about it?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170519/6a97dbb4/attachment.html>


More information about the es-discuss mailing list