smap.js - A forward polyfill for ES6 Maps
Use ES6 Maps with a bunch of convenience methods. Help improve the ES6 spec!
var map = new Map([['foo', 'bar']]);
map.set(0, 42);
map.filter(function(key, value, map) {
return typeof key == 'string';
});
=> new Map([[0, 42]])
map.merge(new Map([['baz', 'thing']]));
=> new Map([[0, 42], ['baz', 'thing']])
map.fetch('NON_EXISTANT', 'default');
=> 'default'
map.invert();
=> new Map([[42, 0], ['thing', 'baz']])
map.reject(function(key, value, map) {
return index < 3;
});
map.has('thing');
=> false
map.clear();
map.isEmpty();
=> true
Installation
In browsers, include smap-shim.js in your page:
<script type="text/javascript" src="https://raw.github.com/eriwen/smap.js/master/smap-shim.min.js"></script>
You can install this via:
Environment Support
If you also use the es5-shim, you can use this in:
- IE9+
- Firefox 13+
- Google Chrome 21+
- Safari 4+
- Opera 12+
- Node.js 0.8+
- PhantomJS
Why this project exists
Boris Smus makes an excellent suggestion for moving the web forward: forward polyfills.
I hope this project can be the basis for a future proposal to TC39. Please gratuitously discuss Map and WeakMap workings in issues, and add methods/tests with pull requests.
This is for everyone, not just JavaScript gurus. Standards bodies want feedback from developers like you.