UNPKG

1.33 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3function pickBy(obj, fn) {
4 return Object.entries(obj)
5 .reduce((o, [k, v]) => {
6 if (fn(v))
7 o[k] = v;
8 return o;
9 }, {});
10}
11exports.pickBy = pickBy;
12function maxBy(arr, fn) {
13 let max;
14 for (let cur of arr) {
15 let i = fn(cur);
16 if (!max || i > max.i) {
17 max = { i, element: cur };
18 }
19 }
20 return max && max.element;
21}
22exports.maxBy = maxBy;
23function sortBy(arr, fn) {
24 // function castType(t: SortTypes | SortTypes[]): string | number | SortTypes[] {
25 // if (t === undefined) return 0
26 // if (t === false) return 1
27 // if (t === true) return -1
28 // return t
29 // }
30 function compare(a, b) {
31 a = a === undefined ? 0 : a;
32 b = b === undefined ? 0 : b;
33 if (Array.isArray(a) && Array.isArray(b)) {
34 if (a.length === 0 && b.length === 0)
35 return 0;
36 let diff = compare(a[0], b[0]);
37 if (diff !== 0)
38 return diff;
39 return compare(a.slice(1), b.slice(1));
40 }
41 if (a < b)
42 return -1;
43 if (a > b)
44 return 1;
45 return 0;
46 }
47 return arr.sort((a, b) => compare(fn(a), fn(b)));
48}
49exports.sortBy = sortBy;