UNPKG

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