The Set constructor accepts an iterable (including an Array and a Set) as an 
argument to populate the newly-constructed Set with several values. There 
should also be the possibility to add or remove multiple elements of an 
already-constructed Set. That covers unions and differences, but it is more 
generic. I would propose:

* Set.prototype.addMultiple(iterable): adds several elements
* Set.prototype.deleteMultiple(iterable): removes several elements
* Set.prototype.restrict(iterable): removes the elements that are not 
enumerated by the iterable.

(Naturally, the two first functions are also valuable for Maps.) For example, 
in order to obtain the difference of mySet1 and mySet2 as a new Set, you could 
write:

    (new Set(mySet1)).deleteMultiple(mySet2) // copies the elements of mySet1 
in a new Set, then removes the elements of mySet2.

Another potentially useful generalisation is to accept multiple iterables 
instead of one. For example:

* new Set(iterable, iterable, ...)

(ditto for the 'addMultiple', 'deleteMultiple' and 'restrict' methods), so that 
we could write

    new Set(mySet1, mySet2, mySet3)

in order to create a new Set which is the union of mySet1, mySet2, and mySet3.

—Claude

Le 4 mars 2013 à 19:56, "Tab Atkins Jr." <jackalm...@gmail.com> a écrit :

> On Mon, Mar 4, 2013 at 10:08 AM,  <al...@instantbird.org> wrote:
>> It would be useful to be able to form the intersection and the union of
>> two Sets. These are natural operations that are currently not part of
>> the API
>> (http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets).
>> 
>> Similar methods would make sense for Map, but one would have to think
>> about what to do in the case where the key but not the value matches.
>> 
>> An intersection is equivalent to a particular filter, so an alternative
>> might be to add a method like Array.filter to Sets instead.
>> 
>> (I filed bug 847355 for this and was told this mailing list was the
>> right place for this suggestion.)
> 
> Yes please, and also minus (remove from set A all elements it shares
> with set B).  All three of these are fairly vital for a lot of code
> using sets.
> 
> ~TJ
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to