|
(function (global, factory) { |
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : |
|
typeof define === 'function' && define.amd ? define(['exports'], factory) : |
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.setArray = {})); |
|
})(this, (function (exports) { 'use strict'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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(); |
|
} |
|
|
|
exports.SetArray = SetArray; |
|
exports.get = get; |
|
exports.pop = pop; |
|
exports.put = put; |
|
exports.remove = remove; |
|
|
|
Object.defineProperty(exports, '__esModule', { value: true }); |
|
|
|
})); |
|
|
|
|