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