Skip to content

Instantly share code, notes, and snippets.

@AStaroverov
Created October 29, 2019 10:09
Show Gist options
  • Save AStaroverov/4b96c8b2fd92080af280489fc62e553c to your computer and use it in GitHub Desktop.
Save AStaroverov/4b96c8b2fd92080af280489fc62e553c to your computer and use it in GitHub Desktop.
let index = 0;
function getIndex(): number {
index += 1;
return index;
}
const mapPointerToMap = new WeakMap<TPointer, number>();
type TPointer = object | unknown[];
export function createKeyByPointers(...pointers: TPointer[]): string {
const result = new Int8Array(pointers.length);
for (let i = 0, pointer; i < pointers.length; i += 1) {
pointer = pointers[i];
if (!mapPointerToMap.has(pointer)) {
mapPointerToMap.set(pointer, getIndex());
}
result[i] = mapPointerToMap.get(pointer);
}
return result.join("|");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment