@web3r/flowerkit
Version:
Tree-shakable JavaScript and TypeScript utility library for frontend/browser apps: DOM, events, arrays, objects, strings, date, JSON, and network helpers (ESM/CJS, SSR-friendly).
1 lines • 2.15 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["export type TGetMapFromObjArgs = Parameters<typeof getMapFromObj>;\r\n\r\nexport type TGetMapFromObjReturn = ReturnType<typeof getMapFromObj>;\r\n\r\n/**\r\n * Gets a Map from object\r\n * @template K,V\r\n * @param {Record<string, V>} [obj={}] Source object\r\n * @param {(key: string, value: V, index: number) => boolean} [getFiltered] Filter function for each entry\r\n * @returns {Map<K, V>} Resulting map\r\n * @throws {TypeError} getMapFromObj: obj must be a plain object\r\n * @throws {TypeError} getMapFromObj: getFiltered must be a function\r\n * @example\r\n * // How to convert an object to ES6 Map and pass only number values?\r\n * const sourceObj = { hello: \"world\", goodbye: 1 };\r\n * const targetMap = getMapFromObj<string, number>(sourceObj as any, (_k, v) => typeof v === \"number\");\r\n * console.log(targetMap); // => Map { \"goodbye\" => 1 }\r\n */\r\nexport const getMapFromObj = <K extends string = string, V = unknown>(\r\n obj: Record<string, V> = {},\r\n getFiltered: (key: string, value: V, index: number) => boolean = () => true\r\n): Map<K, V> => {\r\n\r\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\r\n throw new TypeError(\"getMapFromObj: obj must be a plain object\");\r\n }\r\n if (typeof getFiltered !== \"function\") {\r\n throw new TypeError(\"getMapFromObj: getFiltered must be a function\");\r\n }\r\n\r\n const map = new Map<K, V>();\r\n Object.entries(obj).forEach(([ key, value ], index) => {\r\n if (getFiltered(key, value, index)) {\r\n map.set(key as K, value);\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n"],"names":["getMapFromObj","obj","getFiltered","Array","isArray","TypeError","map","Map","Object","entries","forEach","key","value","index","set"],"mappings":";;;;;;;;;;;;;;AAkBO,MAAMA,cAAgBA,CAC3BC,IAAyB,CAAA,EACzBC,YAAiEA,IAAM,QAGvE,GAAID,MAAQ,aAAeA,MAAQ,UAAYE,MAAMC,QAAQH,KAC3D,MAAM,IAAII,UAAU,6CAEtB,UAAWH,cAAgB,WACzB,MAAM,IAAIG,UAAU,iDAGtB,MAAMC,IAAM,IAAIC,IAChBC,OAAOC,QAAQR,KAAKS,QAAQ,EAAGC,IAAKC,OAASC,SAC3C,GAAIX,YAAYS,IAAKC,MAAOC,OAC1BP,IAAIQ,IAAIH,IAAUC,SAItB,OAAON"}