原链接:https://code.google.com/p/jshashtable/wiki/HashSet
1 HashSet = function HashSet() { 2 if (!(this instanceof HashSet)) 3 return; 4 5 var _data = {}; 6 var _length = 0; 7 var _DEFAULT = new Date(); 8 9 this.contains = function(val) { 10 val = val.toString(); 11 return (!!_data[val] && _data.hasOwnProperty(val)); 12 }; 13 14 this.add = function(val) { 15 if (!this.contains(val.toString())) { 16 _length++; 17 } 18 _data[val.toString()] = val; 19 }; 20 21 this.remove = function(val) { 22 val = val.toString(); 23 if (!this.contains(val)) { 24 return false; 25 } else { 26 delete _data[val.toString()]; 27 _length--; 28 return true; 29 } 30 }; 31 32 this.clear = function() { 33 for ( var val in _data) { 34 if (_data.hasOwnProperty(val)) { 35 delete _data[val]; 36 } 37 } 38 _length = 0; 39 }; 40 41 this.isEmpty = function() { 42 return (_length === 0); 43 }; 44 45 this.size = function() { 46 return _length; 47 }; 48 49 this.toArray = function() { 50 _data.length = _length; 51 var arr = Array.prototype.slice.call(_data); 52 delete _data.length; 53 return arr; 54 }; 55 } 56 exports.HashSet = HashSet;