UNPKG

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