Le 4 mars 2013 à 23:37, Claude Pache <[email protected]> a écrit :
> 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.
Better than 'restrict': a 'filter' method (as proposed by Tab Atkins Jr. below)
similar to the one we have on Arrays. For the intersection of two Sets, we can
write:
mySet1.filter(x => mySet2.has(x))
This pattern has the advantage to be readily applicable to Maps and other
collections with a clear semantic.
—Claude
>
> (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." <[email protected]> a écrit :
>
>> On Mon, Mar 4, 2013 at 10:08 AM, <[email protected]> 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
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss