UNPKG

@augment-vir/common

Version:

A collection of augments, helpers types, functions, and classes for any JavaScript environment.

33 lines (32 loc) 847 B
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, ], ]; } }); }