UNPKG

1.02 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.sortBy = exports.uniqBy = exports.compact = void 0;
4function compact(a) {
5 return a.filter((a) => Boolean(a));
6}
7exports.compact = compact;
8function uniqBy(arr, fn) {
9 return arr.filter((a, i) => {
10 const aVal = fn(a);
11 return !arr.find((b, j) => j > i && fn(b) === aVal);
12 });
13}
14exports.uniqBy = uniqBy;
15function sortBy(arr, fn) {
16 function compare(a, b) {
17 a = a === undefined ? 0 : a;
18 b = b === undefined ? 0 : b;
19 if (Array.isArray(a) && Array.isArray(b)) {
20 if (a.length === 0 && b.length === 0)
21 return 0;
22 const diff = compare(a[0], b[0]);
23 if (diff !== 0)
24 return diff;
25 return compare(a.slice(1), b.slice(1));
26 }
27 if (a < b)
28 return -1;
29 if (a > b)
30 return 1;
31 return 0;
32 }
33 return arr.sort((a, b) => compare(fn(a), fn(b)));
34}
35exports.sortBy = sortBy;