export function findUniqueItemsIn( findIn: Array, checkWith: Array, comparator?: (firstItem: T, secondItem: T) => boolean, ): Array { return findIn.filter( (firstItem) => checkWith.findIndex((secondItem) => comparator ? comparator(firstItem, secondItem) : firstItem === secondItem, ) === -1, ); } export function filterUniqueItems( arr: Array, comparator?: (firstItem: T, secondItem: T) => boolean, ): Array { return arr.filter((firstItem, index, self) => { return ( self.findIndex((secondItem) => comparator ? comparator(firstItem, secondItem) : firstItem === secondItem, ) === index ); }); }