arayts
Version:
让 TypeScript 开发如丝般顺滑。ArayTS 提供了一套高效、优雅的算法工具集,包含常用的数据结构与算法实现,帮助开发者轻松构建可靠的应用程序。
34 lines (33 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BloomFilter = void 0;
/**
* 布隆过滤器
*/
var BloomFilter = /** @class */ (function () {
function BloomFilter(size, numHashes) {
this.bitArray = new Array(size).fill(false);
this.hashFunctions = Array(numHashes).fill(0).map(function (_, i) {
return function (item) {
var hash = 0;
for (var j = 0; j < item.length; j++) {
hash = ((hash << 5) - hash + item.charCodeAt(j)) >>> 0;
hash = ((hash + i) * 16777619) >>> 0;
}
return hash % size;
};
});
}
BloomFilter.prototype.add = function (item) {
for (var _i = 0, _a = this.hashFunctions; _i < _a.length; _i++) {
var hashFunc = _a[_i];
this.bitArray[hashFunc(item)] = true;
}
};
BloomFilter.prototype.test = function (item) {
var _this = this;
return this.hashFunctions.every(function (hashFunc) { return _this.bitArray[hashFunc(item)]; });
};
return BloomFilter;
}());
exports.BloomFilter = BloomFilter;