[Map/Set] Add an .update() method, a la Python?

Tab Atkins Jr. jackalmage at gmail.com
Thu Jun 27 17:11:25 PDT 2013


On Thu, Jun 27, 2013 at 5:06 PM, Allen Wirfs-Brock
<allen at wirfs-brock.com> wrote:
> On Jun 27, 2013, at 4:47 PM, Tab Atkins Jr. wrote:
>> Has it been discussed yet to add an .update() method to Map and Set, a
>> la Python, which take an iterable (yielding [key, value] for Map, and
>> just value for Set) and add the iterable's entries to the Map/Set?
>>
>> It desugars easily:
>>
>> Map.prototype.update = function(iter) {
>>  Map(iter).forEach((v,k)=>this.set(k,v));
>> };
>> Set.prototype.update = function(iter) {
>>  Set(iter).forEach(v=>this.add(v));
>> };
>>
>> I've used this kind of dict/set addition in Python plenty, and added
>> the method to my Map polyfill that I use for some personal projects.
>>
>> Thoughts?
>>
>
> for (let [k,v] of iter) myMap.set(k,v)

Right, it's easy to write yourself, but it's a common enough operation
that Python found it worthwhile to add, and I found it useful for my
own purposes.

In particular, I like that it just returns the modified map/set, so
it's easy to chain with, or to immediately return.

It's basically equivalent to dest.splice(-1, 0, ...source) for Arrays.
 (Or concat, if you ignore the fact that it doesn't alter the
destination.)

~TJ


More information about the es-discuss mailing list