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.
26 lines
614 B
26 lines
614 B
/** |
|
* Creates a keyed JS object from an array, given a function to produce the keys |
|
* and a function to produce the values from each item in the array. |
|
* ```ts |
|
* const phoneBook = [ |
|
* { name: 'Jon', num: '555-1234' }, |
|
* { name: 'Jenny', num: '867-5309' } |
|
* ] |
|
* |
|
* // { Jon: '555-1234', Jenny: '867-5309' } |
|
* const phonesByName = keyValMap( |
|
* phoneBook, |
|
* entry => entry.name, |
|
* entry => entry.num |
|
* ) |
|
* ``` |
|
*/ |
|
export function keyValMap(list, keyFn, valFn) { |
|
const result = Object.create(null); |
|
|
|
for (const item of list) { |
|
result[keyFn(item)] = valFn(item); |
|
} |
|
|
|
return result; |
|
}
|
|
|