UNPKG

@storm-stack/utilities

Version:

This package includes various base utility class and various functions to assist in the development process.

26 lines (25 loc) 747 B
import { isPlainObject } from "@storm-stack/types"; export function flattenObject(object) { return flattenObjectImpl(object); } function flattenObjectImpl(object, prefix = "") { const result = {}; const keys = Object.keys(object); for (const key of keys) { const value = object[key]; const prefixedKey = prefix ? `${prefix}.${key}` : key; if (isPlainObject(value) && Object.keys(value).length > 0) { Object.assign( result, flattenObjectImpl(value, prefixedKey) ); } else if (Array.isArray(value)) { for (const [index, element_] of value.entries()) { result[`${prefixedKey}.${index}`] = element_; } } else { result[prefixedKey] = value; } } return result; }