@augment-vir/common
Version:
A collection of augments, helpers types, functions, and classes for any JavaScript environment.
33 lines (32 loc) • 847 B
JavaScript
import { check } from '@augment-vir/assert';
/**
* Flattens a nested object into a single-level object.
*
* @category Package : @augment-vir/common
* @example
*
* ```ts
* import {flattenObject} from '@augment-vir/common';
*
* flattenObject({a: 'hello', b: {c: 42, d: {e: true, a: 'bye'}}});
* // {a: 'bye', 'c': 42, 'e': true}
* ```
*/
export function flattenObject(originalObject) {
return Object.fromEntries(flattenObjectToEntries(originalObject));
}
function flattenObjectToEntries(originalObject) {
return Object.entries(originalObject).flatMap(([key, value,]) => {
if (check.isObject(value)) {
return flattenObjectToEntries(value);
}
else {
return [
[
key,
value,
],
];
}
});
}