123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- class SetArray {
- constructor() {
- this._indexes = { __proto__: null };
- this.array = [];
- }
- }
- function cast(set) {
- return set;
- }
- function get(setarr, key) {
- return cast(setarr)._indexes[key];
- }
- function put(setarr, key) {
-
- const index = get(setarr, key);
- if (index !== undefined)
- return index;
- const { array, _indexes: indexes } = cast(setarr);
- const length = array.push(key);
- return (indexes[key] = length - 1);
- }
- function pop(setarr) {
- const { array, _indexes: indexes } = cast(setarr);
- if (array.length === 0)
- return;
- const last = array.pop();
- indexes[last] = undefined;
- }
- function remove(setarr, key) {
- const index = get(setarr, key);
- if (index === undefined)
- return;
- const { array, _indexes: indexes } = cast(setarr);
- for (let i = index + 1; i < array.length; i++) {
- const k = array[i];
- array[i - 1] = k;
- indexes[k]--;
- }
- indexes[key] = undefined;
- array.pop();
- }
- export { SetArray, get, pop, put, remove };
|