maxBy
Import from @varavel/vdl-plugin-sdk/utils/arrays.
Utility functions re-exported from es-toolkit (MIT License).
See https://github.com/toss/es-toolkit for more details.
Call Signature
function maxBy<T>(items, getValue): T;
Finds the element in an array that has the maximum value when applying
the getValue function to each element.
Type Parameters
| Type Parameter | Description |
|---|---|
T | The type of elements in the array. |
Parameters
| Parameter | Type | Description |
|---|---|---|
items | readonly [T, T] | The nonempty array of elements to search. |
getValue | (element, index, array) => number | A function that selects a numeric value from each element. |
Returns
T
The element with the maximum value as determined by the getValue function.
Example
maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 }
maxBy([], x => x.a); // Returns: undefined
maxBy([3, NaN, 1], x => x); // Returns: NaN (NaN propagates, matching Math.max)
maxBy(
[
{ name: 'john', age: 30 },
{ name: 'jane', age: 28 },
{ name: 'joe', age: 26 },
],
x => x.age
); // Returns: { name: 'john', age: 30 }
Call Signature
function maxBy<T>(items, getValue): T | undefined;
Finds the element in an array that has the maximum value when applying
the getValue function to each element.
Type Parameters
| Type Parameter | Description |
|---|---|
T | The type of elements in the array. |
Parameters
| Parameter | Type | Description |
|---|---|---|
items | readonly T[] | The array of elements to search. |
getValue | (element, index, array) => number | A function that selects a numeric value from each element. |
Returns
T | undefined
The element with the maximum value as determined by the getValue function,
or undefined if the array is empty.
Example
maxBy([{ a: 1 }, { a: 2 }, { a: 3 }], x => x.a); // Returns: { a: 3 }
maxBy([], x => x.a); // Returns: undefined
maxBy([3, NaN, 1], x => x); // Returns: NaN (NaN propagates, matching Math.max)
maxBy(
[
{ name: 'john', age: 30 },
{ name: 'jane', age: 28 },
{ name: 'joe', age: 26 },
],
x => x.age
); // Returns: { name: 'john', age: 30 }