UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

1 lines 1.23 kB
{"version":3,"file":"keyValMap.js","sourceRoot":"","sources":["../../src/jsutils/keyValMap.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,SAAS,CACvB,IAAsB,EACtB,KAA0B,EAC1B,KAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { ObjMap } from './ObjMap.ts';\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * @internal\n * @example\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' },\n * ];\n *\n * const phonesByName = keyValMap(\n * phoneBook,\n * (entry) => entry.name,\n * (entry) => entry.num,\n * );\n *\n * phonesByName; // => { Jon: '555-1234', Jenny: '867-5309' }\n * ```\n */\nexport function keyValMap<T, V>(\n list: ReadonlyArray<T>,\n keyFn: (item: T) => string,\n valFn: (item: T) => V,\n): ObjMap<V> {\n const result = Object.create(null);\n for (const item of list) {\n result[keyFn(item)] = valFn(item);\n }\n return result;\n}\n"]}