You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
787 B
32 lines
787 B
import type { ObjMap } from './ObjMap'; |
|
/** |
|
* Creates a keyed JS object from an array, given a function to produce the keys |
|
* for each value in the array. |
|
* |
|
* This provides a convenient lookup for the array items if the key function |
|
* produces unique results. |
|
* ```ts |
|
* const phoneBook = [ |
|
* { name: 'Jon', num: '555-1234' }, |
|
* { name: 'Jenny', num: '867-5309' } |
|
* ] |
|
* |
|
* const entriesByName = keyMap( |
|
* phoneBook, |
|
* entry => entry.name |
|
* ) |
|
* |
|
* // { |
|
* // Jon: { name: 'Jon', num: '555-1234' }, |
|
* // Jenny: { name: 'Jenny', num: '867-5309' } |
|
* // } |
|
* |
|
* const jennyEntry = entriesByName['Jenny'] |
|
* |
|
* // { name: 'Jenny', num: '857-6309' } |
|
* ``` |
|
*/ |
|
export declare function keyMap<T>( |
|
list: ReadonlyArray<T>, |
|
keyFn: (item: T) => string, |
|
): ObjMap<T>;
|
|
|