UNPKG

@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.16 kB
{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["export type TGetAllSamePropsFromObjArgs = Parameters<typeof getAllSamePropsFromObj>;\r\n\r\nexport type TGetAllSamePropsFromObjReturn = ReturnType<typeof getAllSamePropsFromObj>;\r\n\r\n/**\r\n * Gets all values inside an object by the specified key, including deeply nested objects\r\n * @template T\r\n * @param {Record<string, unknown>} obj Source object (can be nested)\r\n * @param {string} prop Property name to collect values for\r\n * @returns {T[]} Collected values\r\n * @throws {TypeError} getAllSamePropsFromObj: prop must be a non-empty string\r\n * @throws {TypeError} getAllSamePropsFromObj: obj must be an object\r\n * @example\r\n * // How to get all duplicate key values inside an object?\r\n * const myObj = {\r\n * someProp1: {\r\n * a: \"value 1\",\r\n * b: 2,\r\n * c: 3,\r\n * d: {\r\n * a: 1,\r\n * b: 2\r\n * }\r\n * },\r\n * someProp2: {\r\n * a: \"value 3\",\r\n * b: 2,\r\n * c: {\r\n * a: \"value 4\"\r\n * }\r\n * }\r\n * }\r\n * getAllSamePropsFromObj<string | number>(myObj, \"a\") // [ \"value 1\", 1, \"value 3\", \"value 4\" ]\r\n */\r\nexport const getAllSamePropsFromObj = <T = unknown>(obj: unknown, prop: string): T[] => {\r\n if (typeof prop !== \"string\" || !prop) {\r\n throw new TypeError(\"getAllSamePropsFromObj: prop must be a non-empty string\");\r\n }\r\n if (obj === null || typeof obj !== \"object\") {\r\n throw new TypeError(\"getAllSamePropsFromObj: obj must be an object\");\r\n }\r\n const res: T[] = [];\r\n\r\n JSON.stringify(obj, (key, value) => {\r\n if (key === prop) {\r\n res.push(value as T);\r\n }\r\n return value;\r\n });\r\n return res;\r\n};\r\n"],"names":["getAllSamePropsFromObj","obj","prop","TypeError","res","JSON","stringify","key","value","push"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkCaA,uBAAyBA,CAAcC,IAAcC,QAChE,UAAWA,OAAS,WAAaA,KAC/B,MAAM,IAAIC,UAAU,2DAEtB,GAAIF,MAAQ,aAAeA,MAAQ,SACjC,MAAM,IAAIE,UAAU,iDAEtB,MAAMC,IAAW,GAEjBC,KAAKC,UAAUL,IAAK,CAACM,IAAKC,SACxB,GAAID,MAAQL,KACVE,IAAIK,KAAKD,OAEX,OAAOA,QAET,OAAOJ"}