Default value for Map

# Yehuda Katz (13 years ago)

There are many cases involving nested data structures where the ability to define a default value in Maps would be helpful.

Straw Man:

var map = new Map(=> [])

var arr = map.get('foo') arr === map.get('foo') // true

This enables:

map.get('foo').push(obj)

Which would be (very) approximately equivalent to:

class MapWithDefault extends Map { constructor(default) { this.defaultValue = default; super(); }

get(key) { if (!this.contains('foo')) { let value = this.defaultValue(key); map.set(key, value); }

return super(key);

} }

# Brendan Eich (13 years ago)

See also esdiscuss/2012-January/019723 where defaultdict was raised on es-discuss for the first time (if I'm not mistaken).

# Yehuda Katz (13 years ago)

Just to clarify, the existing Map has a first parameter, so there would need to be some additional API work here (second parameter with undefined first parameter, second class, defaultValue setter, etc.).