summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-03-16 23:46:38 +0100
committerRory& <root@rory.gay>2026-03-16 23:46:38 +0100
commit57827bc915773e840be09ac3a035065ccdb8b43f (patch)
treefd8a0330693f5a187836fc574da01ec463c06aac
parentClean up schemas some more (diff)
downloadserver-ts-57827bc915773e840be09ac3a035065ccdb8b43f.tar.xz
Array method to get distinct items by a selector
-rw-r--r--src/util/util/extensions/Array.ts12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/util/util/extensions/Array.ts b/src/util/util/extensions/Array.ts

index f9cb2fc5..bb5f3362 100644 --- a/src/util/util/extensions/Array.ts +++ b/src/util/util/extensions/Array.ts
@@ -30,3 +30,15 @@ export function arrayRemove<T>(array: T[], item: T): void { array.splice(index, 1); } } + +export function arrayDistinctBy<T, M>(array: T[], selector: (elem: T) => M): T[] { + const mapped = new Set<M>(); + + return array.filter((item) => { + const mappedValue = selector(item); + if (mapped.has(mappedValue)) return false; + + mapped.add(mappedValue); + return true; + }); +}