unique-array.ts 569 B

123456789101112131415161718192021222324
  1. /**
  2. * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author David Sehnal <david.sehnal@gmail.com>
  5. */
  6. interface UniqueArray<K, T> {
  7. keys: Set<K>,
  8. array: T[]
  9. }
  10. namespace UniqueArray {
  11. export function create<K, T>(): UniqueArray<K, T> {
  12. return { keys: new Set<K>(), array: [] };
  13. }
  14. export function add<K, T>({ keys, array }: UniqueArray<K, T>, key: K, value: T) {
  15. if (keys.has(key)) return;
  16. keys.add(key);
  17. array[array.length] = value;
  18. }
  19. }
  20. export { UniqueArray }