@etsoo/shared 1.1.98 → 1.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/__tests__/ArrayUtils.ts +14 -1
- package/lib/cjs/ArrayUtils.d.ts +10 -0
- package/lib/cjs/ArrayUtils.js +10 -0
- package/lib/mjs/ArrayUtils.d.ts +10 -0
- package/lib/mjs/ArrayUtils.js +10 -0
- package/package.json +1 -1
- package/src/ArrayUtils.ts +38 -0
package/README.md
CHANGED
|
@@ -103,7 +103,9 @@ Array related utilities
|
|
|
103
103
|
|---:|---|
|
|
104
104
|
|differences|Array 1 items do not exist in Array 2 or reverse match|
|
|
105
105
|
|max|Get max number item or number item property|
|
|
106
|
+
|maxItem|Get max field value item|
|
|
106
107
|
|min|Get min number item or number item property|
|
|
108
|
+
|minItem|Get min field value item|
|
|
107
109
|
|sum|Sum number items or number item properties|
|
|
108
110
|
|toUnique|Make all items are unique|
|
|
109
111
|
|
package/__tests__/ArrayUtils.ts
CHANGED
|
@@ -44,8 +44,21 @@ test('Tests for max / min fields', () => {
|
|
|
44
44
|
const items = [
|
|
45
45
|
{ id: 1, label: 'a', amount: 3.14 },
|
|
46
46
|
{ id: 2, label: 'b', amount: 4.54 },
|
|
47
|
-
{ id:
|
|
47
|
+
{ id: 3, label: 'b', amount: 1.52 }
|
|
48
48
|
];
|
|
49
49
|
expect(items.max('amount')).toBe(4.54);
|
|
50
50
|
expect(items.min('amount')).toBe(1.52);
|
|
51
51
|
});
|
|
52
|
+
|
|
53
|
+
test('Tests for maxItem / minItem', () => {
|
|
54
|
+
const items = [
|
|
55
|
+
{ id: 1, label: 'a', amount: 3.14 },
|
|
56
|
+
{ id: 2, label: 'b', amount: 4.54 },
|
|
57
|
+
{ id: 3, label: 'b', amount: 1.52 }
|
|
58
|
+
];
|
|
59
|
+
expect(items.maxItem('amount')?.id).toBe(2);
|
|
60
|
+
expect(items.minItem('amount')?.id).toBe(3);
|
|
61
|
+
|
|
62
|
+
const emptyItems: { id: string; amount: number }[] = [];
|
|
63
|
+
expect(emptyItems.maxItem('amount')).toBeUndefined();
|
|
64
|
+
});
|
package/lib/cjs/ArrayUtils.d.ts
CHANGED
|
@@ -12,11 +12,21 @@ declare global {
|
|
|
12
12
|
* @param field Object field to calculate
|
|
13
13
|
*/
|
|
14
14
|
max(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number;
|
|
15
|
+
/**
|
|
16
|
+
* Get max field value item
|
|
17
|
+
* @param field Object field to calculate
|
|
18
|
+
*/
|
|
19
|
+
maxItem(field: T extends object ? DataTypes.Keys<T, number> : never): T | undefined;
|
|
15
20
|
/**
|
|
16
21
|
* Get min number item or number item property
|
|
17
22
|
* @param field Object field to calculate
|
|
18
23
|
*/
|
|
19
24
|
min(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number;
|
|
25
|
+
/**
|
|
26
|
+
* Get min field value item
|
|
27
|
+
* @param field Object field to calculate
|
|
28
|
+
*/
|
|
29
|
+
minItem(field: T extends object ? DataTypes.Keys<T, number> : never): T | undefined;
|
|
20
30
|
/**
|
|
21
31
|
* Sum number items or number item properties
|
|
22
32
|
* @param field Object field to calculate
|
package/lib/cjs/ArrayUtils.js
CHANGED
|
@@ -25,12 +25,22 @@ Array.prototype.max = function (field) {
|
|
|
25
25
|
}
|
|
26
26
|
return Math.max(...this.map((item) => item[field]));
|
|
27
27
|
};
|
|
28
|
+
Array.prototype.maxItem = function (field) {
|
|
29
|
+
if (this.length === 0)
|
|
30
|
+
return undefined;
|
|
31
|
+
return this.reduce((prev, curr) => prev[field] > curr[field] ? prev : curr);
|
|
32
|
+
};
|
|
28
33
|
Array.prototype.min = function (field) {
|
|
29
34
|
if (field == null) {
|
|
30
35
|
return Math.min(...this);
|
|
31
36
|
}
|
|
32
37
|
return Math.min(...this.map((item) => item[field]));
|
|
33
38
|
};
|
|
39
|
+
Array.prototype.minItem = function (field) {
|
|
40
|
+
if (this.length === 0)
|
|
41
|
+
return undefined;
|
|
42
|
+
return this.reduce((prev, curr) => prev[field] < curr[field] ? prev : curr);
|
|
43
|
+
};
|
|
34
44
|
Array.prototype.sum = function (field) {
|
|
35
45
|
if (field == null) {
|
|
36
46
|
return this.reduce((total, num) => total + num, 0);
|
package/lib/mjs/ArrayUtils.d.ts
CHANGED
|
@@ -12,11 +12,21 @@ declare global {
|
|
|
12
12
|
* @param field Object field to calculate
|
|
13
13
|
*/
|
|
14
14
|
max(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number;
|
|
15
|
+
/**
|
|
16
|
+
* Get max field value item
|
|
17
|
+
* @param field Object field to calculate
|
|
18
|
+
*/
|
|
19
|
+
maxItem(field: T extends object ? DataTypes.Keys<T, number> : never): T | undefined;
|
|
15
20
|
/**
|
|
16
21
|
* Get min number item or number item property
|
|
17
22
|
* @param field Object field to calculate
|
|
18
23
|
*/
|
|
19
24
|
min(...field: T extends number ? [undefined?] : T extends object ? [DataTypes.Keys<T, number>] : [never]): number;
|
|
25
|
+
/**
|
|
26
|
+
* Get min field value item
|
|
27
|
+
* @param field Object field to calculate
|
|
28
|
+
*/
|
|
29
|
+
minItem(field: T extends object ? DataTypes.Keys<T, number> : never): T | undefined;
|
|
20
30
|
/**
|
|
21
31
|
* Sum number items or number item properties
|
|
22
32
|
* @param field Object field to calculate
|
package/lib/mjs/ArrayUtils.js
CHANGED
|
@@ -19,12 +19,22 @@ Array.prototype.max = function (field) {
|
|
|
19
19
|
}
|
|
20
20
|
return Math.max(...this.map((item) => item[field]));
|
|
21
21
|
};
|
|
22
|
+
Array.prototype.maxItem = function (field) {
|
|
23
|
+
if (this.length === 0)
|
|
24
|
+
return undefined;
|
|
25
|
+
return this.reduce((prev, curr) => prev[field] > curr[field] ? prev : curr);
|
|
26
|
+
};
|
|
22
27
|
Array.prototype.min = function (field) {
|
|
23
28
|
if (field == null) {
|
|
24
29
|
return Math.min(...this);
|
|
25
30
|
}
|
|
26
31
|
return Math.min(...this.map((item) => item[field]));
|
|
27
32
|
};
|
|
33
|
+
Array.prototype.minItem = function (field) {
|
|
34
|
+
if (this.length === 0)
|
|
35
|
+
return undefined;
|
|
36
|
+
return this.reduce((prev, curr) => prev[field] < curr[field] ? prev : curr);
|
|
37
|
+
};
|
|
28
38
|
Array.prototype.sum = function (field) {
|
|
29
39
|
if (field == null) {
|
|
30
40
|
return this.reduce((total, num) => total + num, 0);
|
package/package.json
CHANGED
package/src/ArrayUtils.ts
CHANGED
|
@@ -22,6 +22,14 @@ declare global {
|
|
|
22
22
|
: [never]
|
|
23
23
|
): number;
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Get max field value item
|
|
27
|
+
* @param field Object field to calculate
|
|
28
|
+
*/
|
|
29
|
+
maxItem(
|
|
30
|
+
field: T extends object ? DataTypes.Keys<T, number> : never
|
|
31
|
+
): T | undefined;
|
|
32
|
+
|
|
25
33
|
/**
|
|
26
34
|
* Get min number item or number item property
|
|
27
35
|
* @param field Object field to calculate
|
|
@@ -34,6 +42,14 @@ declare global {
|
|
|
34
42
|
: [never]
|
|
35
43
|
): number;
|
|
36
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Get min field value item
|
|
47
|
+
* @param field Object field to calculate
|
|
48
|
+
*/
|
|
49
|
+
minItem(
|
|
50
|
+
field: T extends object ? DataTypes.Keys<T, number> : never
|
|
51
|
+
): T | undefined;
|
|
52
|
+
|
|
37
53
|
/**
|
|
38
54
|
* Sum number items or number item properties
|
|
39
55
|
* @param field Object field to calculate
|
|
@@ -85,6 +101,17 @@ Array.prototype.max = function <T>(
|
|
|
85
101
|
return Math.max(...this.map((item) => item[field] as number));
|
|
86
102
|
};
|
|
87
103
|
|
|
104
|
+
Array.prototype.maxItem = function <T>(
|
|
105
|
+
this: Array<T>,
|
|
106
|
+
field: T extends object ? DataTypes.Keys<T, number> : never
|
|
107
|
+
) {
|
|
108
|
+
if (this.length === 0) return undefined;
|
|
109
|
+
|
|
110
|
+
return this.reduce((prev, curr) =>
|
|
111
|
+
prev[field] > curr[field] ? prev : curr
|
|
112
|
+
);
|
|
113
|
+
};
|
|
114
|
+
|
|
88
115
|
Array.prototype.min = function <T>(
|
|
89
116
|
this: Array<T>,
|
|
90
117
|
field: T extends object ? DataTypes.Keys<T, number> : undefined
|
|
@@ -96,6 +123,17 @@ Array.prototype.min = function <T>(
|
|
|
96
123
|
return Math.min(...this.map((item) => item[field] as number));
|
|
97
124
|
};
|
|
98
125
|
|
|
126
|
+
Array.prototype.minItem = function <T>(
|
|
127
|
+
this: Array<T>,
|
|
128
|
+
field: T extends object ? DataTypes.Keys<T, number> : never
|
|
129
|
+
) {
|
|
130
|
+
if (this.length === 0) return undefined;
|
|
131
|
+
|
|
132
|
+
return this.reduce((prev, curr) =>
|
|
133
|
+
prev[field] < curr[field] ? prev : curr
|
|
134
|
+
);
|
|
135
|
+
};
|
|
136
|
+
|
|
99
137
|
Array.prototype.sum = function <T>(
|
|
100
138
|
this: Array<T>,
|
|
101
139
|
field: T extends object ? DataTypes.Keys<T, number> : undefined
|