https://github.com/rousan/collections-es6
:gift: ES6 Map, Set, WeakMap and WeakSet polyfill in pure ES5
https://github.com/rousan/collections-es6
collections es5 es6 es6-collections es6-map es6-set es6-weakmap es6-weakset harmony harmony-collections map polyfills ponyfills set weakmap weakset
Last synced: 3 months ago
JSON representation
:gift: ES6 Map, Set, WeakMap and WeakSet polyfill in pure ES5
- Host: GitHub
- URL: https://github.com/rousan/collections-es6
- Owner: rousan
- License: mit
- Created: 2017-06-13T11:54:35.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-02-18T09:49:11.000Z (over 7 years ago)
- Last Synced: 2025-06-04T14:13:22.654Z (4 months ago)
- Topics: collections, es5, es6, es6-collections, es6-map, es6-set, es6-weakmap, es6-weakset, harmony, harmony-collections, map, polyfills, ponyfills, set, weakmap, weakset
- Language: JavaScript
- Homepage: https://rousan.io/collections-es6/
- Size: 54.7 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/collections-es6)
[](https://www.npmjs.com/package/collections-es6)
[](https://github.com/rousan/collections-es6/blob/master/LICENSE)# Collections-ES6
Provides support for `ES6` `Map`, `Set`, `WeakMap` and `WeakSet` in `ES5` for older JS environments i.e. older browsers or `NodeJS`.
> ES6 Map, Set, WeakMap and WeakSet polyfill in pure ES5.
## Install
It depends on [symbol-es6](https://github.com/rousan/symbol-es6) module, so you need to include both.
### NPM
Install it from `npm` and `require` it before any other modules:
```bash
$ npm install --save collections-es6
``````javascript
require("symbol-es6");
require("collections-es6");
```### CDN
If you prefer CDN, then just insert it into your HTML page on the top of other scripts:
```html
```
## Examples
```javascript
"use strict";var ES6 = require("symbol-es6");
ES6 = require("collections-es6");var map = new Map([[1, 2], ["Hi", "Hello World"]]);
console.log(map.has(1)); //true
console.log(map.has("Hi")); //truemap.set(NaN, "NaN");
map.set(NaN, "Again NaN!");
map.set(0, "Zero");
map.set(-0, "Again Zero!");console.log(map.size); //4
console.log(map.has(NaN)); //true
console.log(map.size); //4
console.log(map.has(0)); //true
console.log(map.has(-0)); //truevar set = new Set([NaN, 0, -0, "Hi", "Hello World"]);
set.add(Infinity);console.log(set.has(NaN)); //true
console.log(set.has("Hi")); //true
console.log(set.size); //5
console.log(set.has(Infinity)); //true
console.log(set.has(-Infinity)); //falsevar wm = new WeakMap();
wm.set(Object, "object");
wm.set(Function, "function");
wm.set({}, "new Object");console.log(wm.has(Object)); //true
console.log(wm.has({})); //falsevar ws = new WeakSet();
ws.add(Function);
ws.add({});console.log(ws.has({})); //false
console.log(ws.has(Function)); //trueconsole.log(ES6.isMap(map)); //true
console.log(ES6.isSet(set)); //true
console.log(ES6.isWeakMap(wm)); //true
console.log(ES6.isWeakSet(ws)); //true
```## Polyfills
* `Map`
* `Map.prototype.size`
* `Map.prototype.set()`
* `Map.prototype.get()`
* `Map.prototype.has()`
* `Map.prototype.clear()`
* `Map.prototype.delete()`
* `Map.prototype.entries()`
* `Map.prototype.forEach()`
* `Map.prototype.keys()`
* `Map.prototype.values()`
* `Map.prototype[@@iterator]()`
* `Map.prototype[@@toStringTag]()`
* `Set`
* `Set.prototype.size`
* `Set.prototype.add()`
* `Set.prototype.clear()`
* `Set.prototype.delete()`
* `Set.prototype.entries()`
* `Set.prototype.forEach()`
* `Set.prototype.has()`
* `Set.prototype.keys()`
* `Set.prototype.values()`
* `Set.prototype[@@iterator]()`
* `Set.prototype[@@toStringTag]()`
* `WeakMap`* `WeakMap.prototype.delete()`
* `WeakMap.prototype.get()`
* `WeakMap.prototype.has()`
* `WeakMap.prototype.set()`
* `WeakMap.prototype[@@toStringTag]()`
* `WeakSet`* `WeakSet.prototype.add()`
* `WeakSet.prototype.delete()`
* `WeakSet.prototype.has()`
* `WeakSet.prototype[@@toStringTag]()`## Contributing
Your PRs and stars are always welcome.
Please, try to follow:
* Clone the repository.
* Checkout `develop` branch.
* Install dependencies.
* Add your new features or fixes.
* Build the project.```sh
$ git clone https://github.com/rousan/collections-es6.git
$ cd collections-es6
$ git checkout develop
$ npm i
$ npm run build
```