UNPKG

1.21 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.unique = unique;
7exports.flatMap = flatMap;
8exports.objectSortedEntries = objectSortedEntries;
9exports.objectSortedEntriesDeep = objectSortedEntriesDeep;
10exports.setDifference = setDifference;
11
12function unique(array) {
13 return [...new Set(array)];
14}
15
16function flatMap(array, projectFn) {
17 let out = [];
18
19 for (let arr of array.map(projectFn)) {
20 out.push(...arr);
21 }
22
23 return out;
24}
25
26function objectSortedEntries(obj) {
27 return Object.entries(obj).sort(([keyA], [keyB]) => keyA.localeCompare(keyB));
28}
29
30function objectSortedEntriesDeep(object) {
31 let sortedEntries = objectSortedEntries(object);
32
33 for (let i = 0; i < sortedEntries.length; i++) {
34 sortedEntries[i][1] = sortEntry(sortedEntries[i][1]);
35 }
36
37 return sortedEntries;
38}
39
40function sortEntry(entry) {
41 if (Array.isArray(entry)) {
42 return entry.map(sortEntry);
43 }
44
45 if (typeof entry === 'object' && entry != null) {
46 return objectSortedEntriesDeep(entry);
47 }
48
49 return entry;
50}
51
52function setDifference(a, b) {
53 let difference = new Set();
54
55 for (let e of a) {
56 if (!b.has(e)) {
57 difference.add(e);
58 }
59 }
60
61 return difference;
62}
\No newline at end of file