UNPKG

2.5 kBJavaScriptView Raw
1const lodash = require('lodash');
2
3module.exports = {
4
5 lodash,
6
7 extend (...args) {
8 return lodash.extend.apply(lodash, args);
9 },
10
11 clone (...args) {
12 return lodash.cloneDeep.apply(lodash, args);
13 },
14
15 get (...args) {
16 return lodash.get.apply(lodash, args);
17 },
18
19 hasPath (...args) {
20 return !!lodash.get.apply(lodash, args);
21 },
22
23 set (...args) {
24 return lodash.setWith.apply(lodash, args);
25 },
26
27 arrayToObject (arr) {
28 let o = {};
29 let i = 0;
30 let len = arr.length;
31 for (i; i < len; i +=1) {
32 o[arr[i][0]] = arr[i][1];
33 }
34 return o;
35 },
36
37 // shallow Object Inversion
38 invert (obj) {
39 let keys = Object.keys(obj);
40 let i = 0;
41 let len = keys.length;
42 for (i; i < len; i +=1) {
43 obj[obj[keys[i]]] = keys[i];
44 delete obj[keys[i]];
45 }
46 },
47
48 createShallowInvertedClone (obj) {
49 let keys = Object.keys(obj);
50 let i = 0;
51 let len = keys.length;
52 let clone = {};
53 for (i; i < len; i +=1) {
54 clone[obj[keys[i]]] = keys[i];
55 }
56 return clone;
57 },
58
59 select (obj, ...arr) {
60 arr = (typeof arr[0] === typeof []) ? arr[0] : arr;
61 let o = {};
62 let i = 0;
63 let len = arr.length;
64 for (i; i < len; i +=1) {
65 o[arr[i]] = obj[arr[i]];
66 }
67 return o;
68 },
69
70 selectCombination (objects, ...arr) {
71 arr = (typeof arr[0] === typeof []) ? arr[0] : arr;
72 let i = 0;
73 let len = arr.length;
74 let o = {};
75
76 for (i = 0; i < len; i +=1) {
77 inner:
78 for (let x= 0; x < objects.length; x +=1) {
79 if (objects[x][arr[i]]) {
80 o[arr[i]] = objects[x][arr[i]];
81 break inner;
82 }
83 }
84 }
85
86 return o;
87 },
88
89 drop (obj, ...arr) {
90 arr = (typeof arr[0] === typeof []) ? arr[0] : arr;
91 let i = 0;
92 let len = arr.length;
93 for (i; i < len; i +=1) {
94 delete obj[arr[i]];
95 }
96 },
97
98 format (...args) {
99 let [object, ...keys] = args;
100 keys = (args.length === 2 && typeof keys[0] === typeof []) ? keys[0] : keys;
101 let i = 0;
102 let len = keys.length;
103 let o = {};
104
105 for (i; i < len; i +=1) {
106 if (typeof keys[i] === 'string') {
107 lodash.set(o, keys[i], lodash.get(object, keys[i]));
108 } else if (keys[i].length === 2) {
109 lodash.set(o, keys[i][0], lodash.get(object, keys[i][1]));
110 }
111 }
112 return o;
113 },
114
115 explode (obj) {
116 let keys = Object.keys(obj);
117 keys.forEach(key => {
118 let value = obj[key];
119 delete obj[key];
120 lodash.setWith(obj, key, value);
121 });
122 }
123
124}