VDL Plugin SDK

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 ParameterDescription
TThe type of elements in the array.

Parameters

ParameterTypeDescription
itemsreadonly [T, T]The nonempty array of elements to search.
getValue(element, index, array) => numberA 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 ParameterDescription
TThe type of elements in the array.

Parameters

ParameterTypeDescription
itemsreadonly T[]The array of elements to search.
getValue(element, index, array) => numberA 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 }