diff options
Diffstat (limited to 'master/server/src/utility.ts')
-rw-r--r-- | master/server/src/utility.ts | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/master/server/src/utility.ts b/master/server/src/utility.ts new file mode 100644 index 0000000..6a02575 --- /dev/null +++ b/master/server/src/utility.ts @@ -0,0 +1,16 @@ +export function filter_object< + ObjectType, + Key extends keyof ObjectType, + Value extends ObjectType[keyof ObjectType] +>( + obj: ObjectType, + filter_cb: (key: Key, value: Value) => boolean +) { + const entries = Object.entries(obj); + + const filtered = entries.filter(([ str_key, any_value ]) => { + return filter_cb(str_key as Key, any_value as Value); + }); + + return Object.fromEntries(filtered) as ObjectType; +} |