deno.land / std@0.224.0 / collections / max_of.ts

max_of.ts
View Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.// This module is browser compatible.
/** * Applies the given selector to all elements of the provided collection and * returns the max value of all elements. If an empty array is provided the * function will return undefined * * @example * ```ts * import { maxOf } from "https://deno.land/std@$STD_VERSION/collections/max_of.ts"; * import { assertEquals } from "https://deno.land/std@$STD_VERSION/assert/assert_equals.ts"; * * const inventory = [ * { name: "mustard", count: 2 }, * { name: "soy", count: 4 }, * { name: "tomato", count: 32 }, * ]; * * const maxCount = maxOf(inventory, (i) => i.count); * * assertEquals(maxCount, 32); * ``` */export function maxOf<T>( array: Iterable<T>, selector: (el: T) => number,): number | undefined;/** * Applies the given selector to all elements of the provided collection and * returns the max value of all elements. If an empty array is provided the * function will return undefined * * @example * ```ts * import { maxOf } from "https://deno.land/std@$STD_VERSION/collections/max_of.ts"; * import { assertEquals } from "https://deno.land/std@$STD_VERSION/assert/assert_equals.ts"; * * const inventory = [ * { name: "mustard", count: 2n }, * { name: "soy", count: 4n }, * { name: "tomato", count: 32n }, * ]; * * const maxCount = maxOf(inventory, (i) => i.count); * * assertEquals(maxCount, 32n); * ``` */export function maxOf<T>( array: Iterable<T>, selector: (el: T) => bigint,): bigint | undefined;export function maxOf<T, S extends ((el: T) => number) | ((el: T) => bigint)>( array: Iterable<T>, selector: S,): ReturnType<S> | undefined { let maximumValue: ReturnType<S> | undefined = undefined;
for (const i of array) { const currentValue = selector(i) as ReturnType<S>;
if (maximumValue === undefined || currentValue > maximumValue) { maximumValue = currentValue; continue; }
if (Number.isNaN(currentValue)) { return currentValue; } }
return maximumValue;}
std

Version Info

Tagged at
6 months ago