1234567891011121314151617181920212223 |
- /**
- * 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.
- *
- * 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 default function keyValMap(list, keyFn, valFn) {
- return list.reduce(function (map, item) {
- map[keyFn(item)] = valFn(item);
- return map;
- }, Object.create(null));
- }
|