@maddimathon/utility-typescript
Version:
TypeScript utilities (types, functions, classes) to use in various projects.
28 lines (27 loc) • 728 B
JavaScript
/**
* @since 2.0.0-beta.2
*
* @packageDocumentation
*/
/*!
* @maddimathon/utility-typescript@2.0.0-beta.5
* @license MIT
*/
/**
* Maps a single-level object's properties to new values based on a callback
* function.
*
* @category Functions – Object
*
* @since 2.0.0-beta.2
*/
export async function objectMapAsync(objPromise, callback) {
return Promise.resolve(objPromise).then(async (obj) => {
// returns
if (typeof obj !== 'object' || !obj) {
return obj;
}
const entries = Object.entries(obj);
return Promise.all(entries.map(async ([key, value]) => [key, await callback([key, value])])).then(mappedEntries => Object.fromEntries(mappedEntries));
});
}