27 lines
		
	
	
		
			614 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			614 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * 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;
 | |
| }
 |