Sha256: e5bc9deb48f46ecc0d38a8a5adf0cddba19153ec2b8a4ceea784a9d296cf0de1

Contents?: true

Size: 614 Bytes

Versions: 26

Compression:

Stored size: 614 Bytes

Contents

/**
 * 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;
}

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
clapton-0.0.6 lib/clapton/javascripts/node_modules/graphql/jsutils/keyValMap.mjs
clapton-0.0.5 lib/clapton/javascripts/node_modules/graphql/jsutils/keyValMap.mjs
clapton-0.0.4 lib/clapton/javascripts/node_modules/graphql/jsutils/keyValMap.mjs
clapton-0.0.3 lib/clapton/javascripts/node_modules/graphql/jsutils/keyValMap.mjs
clapton-0.0.2 lib/clapton/javascripts/node_modules/graphql/jsutils/keyValMap.mjs
clapton-0.0.1 lib/clapton/javascripts/node_modules/graphql/jsutils/keyValMap.mjs