Le 4 mars 2013 à 23:37, Claude Pache <claude.pa...@gmail.com> 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." <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