VDL Plugin SDK

keyBy

Import from @varavel/vdl-plugin-sdk/utils/arrays.

function keyBy<T, K>(arr, getKeyFromItem): Record<K, T>;

Maps each element of an array based on a provided key-generating function.

This function takes an array and a function that generates a key from each element. It returns an object where the keys are the generated keys and the values are the corresponding elements. If there are multiple elements generating the same key, the last element among them is used as the value.

Type Parameters

Type ParameterDescription
TThe type of elements in the array.
K extends PropertyKeyThe type of keys.

Parameters

ParameterTypeDescription
arrreadonly T[]The array of elements to be mapped.
getKeyFromItem(item, index, array) => KA function that generates a key from an element, its index, and the array.

Returns

Record<K, T>

An object where keys are mapped to each element of an array.

Examples

const array = [
  { category: 'fruit', name: 'apple' },
  { category: 'fruit', name: 'banana' },
  { category: 'vegetable', name: 'carrot' }
];
const result = keyBy(array, item => item.category);
// result will be:
// {
//   fruit: { category: 'fruit', name: 'banana' },
//   vegetable: { category: 'vegetable', name: 'carrot' }
// }
// Using index parameter
const items = ['a', 'b', 'c'];
const result = keyBy(items, (item, index) => index);
// result will be: { 0: 'a', 1: 'b', 2: 'c' }