var Class = require('./Class'); var fill = require('./fill'); var fnv1a = require('./fnv1a'); var strHash = require('./strHash'); var each = require('./each'); var some = require('./some'); exports = Class({ initialize: function() { var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1024; var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3; this._buckets = fill(new Array(size), 0); this._k = k; this._size = size; }, add: function(val) { var _this = this; each(this._locations(val), function(location) { return (_this._buckets[location] = 1); }); }, test: function(val) { var _this2 = this; return !some(this._locations(val), function(location) { return _this2._buckets[location] === 0; }); }, _locations: function(val) { var ret = []; var size = this._size; var a = fnv1a(val); var b = strHash(val); for (var i = 0; i < this._k; i++) { ret[i] = (a + b * i) % size; } return ret; } }); module.exports = exports;