54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.SortedMap = void 0;
|
|
const array_1 = require("../array");
|
|
class SortedMap {
|
|
constructor(comparator) {
|
|
this.comparator = comparator;
|
|
this.array = new array_1.SortedArray((a, b) => comparator(a.key, b.key), true);
|
|
}
|
|
has(key) {
|
|
return this.array.includes({ key: key, value: undefined });
|
|
}
|
|
get(key, _default) {
|
|
var _a, _b;
|
|
const index = this.array.firstIndexOf({ key: key, value: undefined });
|
|
return (_b = (_a = this.array.get(index)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : _default;
|
|
}
|
|
set(key, value) {
|
|
this.array.push({ key, value });
|
|
return this;
|
|
}
|
|
delete(key) {
|
|
return this.array.delete({ key: key, value: undefined });
|
|
}
|
|
keys() {
|
|
return this.array
|
|
.toArray()
|
|
.map((n) => n.key)[Symbol.iterator]();
|
|
}
|
|
values() {
|
|
return this.array
|
|
.toArray()
|
|
.map((n) => n.value)[Symbol.iterator]();
|
|
}
|
|
entries() {
|
|
return this.array
|
|
.toArray()
|
|
.map((n) => [n.key, n.value])[Symbol.iterator]();
|
|
}
|
|
clear() {
|
|
this.array.clear();
|
|
}
|
|
[Symbol.iterator]() {
|
|
return this.entries();
|
|
}
|
|
forEach(cb, thisArg) {
|
|
this.array.toArray().forEach((item) => cb.call(thisArg, item.value, item.key, this));
|
|
}
|
|
get size() {
|
|
return this.array.length;
|
|
}
|
|
}
|
|
exports.SortedMap = SortedMap;
|