Additional Set.prototype methods

Tab Atkins Jr. jackalmage at
Fri Jan 3 09:52:04 PST 2014

On Tue, Dec 31, 2013 at 11:36 AM, David Bruant <bruant.d at> wrote:
> Hi,
> I've been playing with Sets recently and believe that the following
> additions would make them more useful by default:
> *
> * Set.prototype.filter
> * Set.prototype.toJSON = function(){
>     return [...this];
> };
> The 2 first are to easily create sets from existing sets very much like what
> we already have with arrays. I haven't had a use for a .reduce yet, but
> maybe that would make sense too?
> The toJSON is just to provide a good default. Obviously anyone disatisfied
> with it can shadow it on specific instances. But this serialization makes
> more sense by default than the one you get now (own properties of the set
> object... which have none in common usages?)

I agree with adding more of the array primitives to sets - sets are
just an "weakly ordered" version of arrays, so basically all of them
make sense.

map() is the only troublesome one, because it can produce a smaller
set, if you return the same value from multiple iterations.  This
isn't necessarily bad, but it's surprising.


More information about the es-discuss mailing list