1 | import each from './each';
|
2 | import isArray from './is-array';
|
3 | import isFunction from './is-function';
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | export default <T>(arr: T[], fn: ((v: T) => number) | string): T | undefined => {
|
19 | if (!isArray(arr)) {
|
20 | return undefined;
|
21 | }
|
22 |
|
23 | let maxItem;
|
24 | let max = -Infinity;
|
25 |
|
26 | for (let i = 0; i < arr.length; i++) {
|
27 | const item = arr[i];
|
28 | const v = isFunction(fn) ? fn(item) : item[fn];
|
29 |
|
30 | if (v > max) {
|
31 | maxItem = item;
|
32 | max = v;
|
33 | }
|
34 | }
|
35 |
|
36 | return maxItem;
|
37 | };
|