flatMap or flatten

Frankie Bagnardi f.bagnardi at gmail.com
Fri May 19 19:54:46 UTC 2017


I often do the `.reduce((xs, ys) => xs.concat(ys))` and I feel the need to
leave a comment explaining what it does.

+1 to this proposal.


On Fri, May 19, 2017 at 12:44 PM, Luan Nico <luannico27+es-discuss at gmail.com
> wrote:

> 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?
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170519/dbb8a689/attachment.html>


More information about the es-discuss mailing list