diff options
Diffstat (limited to 'shared/core-utils/common/object.ts')
-rw-r--r-- | shared/core-utils/common/object.ts | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/shared/core-utils/common/object.ts b/shared/core-utils/common/object.ts new file mode 100644 index 000000000..88d6b7514 --- /dev/null +++ b/shared/core-utils/common/object.ts | |||
@@ -0,0 +1,30 @@ | |||
1 | function pick <O extends object, K extends keyof O> (object: O, keys: K[]): Pick<O, K> { | ||
2 | const result: any = {} | ||
3 | |||
4 | for (const key of keys) { | ||
5 | if (Object.prototype.hasOwnProperty.call(object, key)) { | ||
6 | result[key] = object[key] | ||
7 | } | ||
8 | } | ||
9 | |||
10 | return result | ||
11 | } | ||
12 | |||
13 | function sortObjectComparator (key: string, order: 'asc' | 'desc') { | ||
14 | return (a: any, b: any) => { | ||
15 | if (a[key] < b[key]) { | ||
16 | return order === 'asc' ? -1 : 1 | ||
17 | } | ||
18 | |||
19 | if (a[key] > b[key]) { | ||
20 | return order === 'asc' ? 1 : -1 | ||
21 | } | ||
22 | |||
23 | return 0 | ||
24 | } | ||
25 | } | ||
26 | |||
27 | export { | ||
28 | pick, | ||
29 | sortObjectComparator | ||
30 | } | ||