node package manager



Set collection as specified in ECMAScript6

v0.1 version does not ensure O(1) algorithm complexity (but O(n)). This shortcoming will be addressed in v1.0


If you want to make sure your environment implements Set, do:


If you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing Set on global scope, do:

var Set = require('es6-set');

If you strictly want to use polyfill even if native Set exists, do:

var Set = require('es6-set/polyfill');


$ npm install es6-set

To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: Browserify, Webmake or Webpack


Best is to refer to specification. Still if you want quick look, follow examples:

var Set = require('es6-set');
var set = new Set(['raz', 'dwa', {}]);
set.size;          // 3 
set.has('raz');    // true 
set.has('foo');    // false 
set.add('foo');    // set 
set.size           // 4 
set.has('foo');    // true 
set.has('dwa');    // true 
set.delete('dwa'); // true 
set.size;          // 3 
set.forEach(function (value) {
 // 'raz', {}, 'foo' iterated 
// FF nightly only: 
for (value of set) {
 // 'raz', {}, 'foo' iterated 
var iterator = set.values();; // { done: false, value: 'raz' }; // { done: false, value: {} }; // { done: false, value: 'foo' }; // { done: true, value: undefined } 
set.clear(); // undefined 
set.size; // 0 

Tests Build Status

$ npm test