@storm-stack/utilities
Version:
This package includes various base utility class and various functions to assist in the development process.
28 lines (27 loc) • 838 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.flattenObject = flattenObject;
var _types = require("@storm-stack/types");
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 ((0, _types.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;
}