Skip to content

Commit 1da5c56

Browse files
✨ added uniqueBy
1 parent d22a331 commit 1da5c56

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Add tag for a minor/major release by `npm version minor` and `npm version major` after commit

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@stackbox-dev/stdlib",
3-
"version": "2.1.0",
3+
"version": "2.1.1",
44
"description": "Node.js Standary Utility Functions",
55
"main": "dist/index.js",
66
"repository": {

src/lang.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@ export const unique = <T>(items: T[]): T[] => {
6464
return resp;
6565
};
6666

67+
export const uniqueBy = <T>(items: T[], fn: KeyFn<T>): T[] => {
68+
const seen = new Set<string | number>();
69+
const resp: T[] = [];
70+
for (const item of items) {
71+
const value = fn(item);
72+
if (seen.has(value)) continue;
73+
resp.push(item);
74+
seen.add(value);
75+
}
76+
return resp;
77+
};
78+
6779
export const intersection = <T>(items1: T[], items2: T[]) => {
6880
const items2Set = new Set(items2);
6981
const inters = new Set<T>();

0 commit comments

Comments
 (0)