Files
cannaiq/frontend/node_modules/es-toolkit/dist/object/flattenObject.js
2025-11-28 19:45:44 -07:00

31 lines
1.0 KiB
JavaScript

'use strict';
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const isPlainObject = require('../predicate/isPlainObject.js');
function flattenObject(object, { delimiter = '.' } = {}) {
return flattenObjectImpl(object, '', delimiter);
}
function flattenObjectImpl(object, prefix, delimiter) {
const result = {};
const keys = Object.keys(object);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const value = object[key];
const prefixedKey = prefix ? `${prefix}${delimiter}${key}` : key;
if (isPlainObject.isPlainObject(value) && Object.keys(value).length > 0) {
Object.assign(result, flattenObjectImpl(value, prefixedKey, delimiter));
continue;
}
if (Array.isArray(value)) {
Object.assign(result, flattenObjectImpl(value, prefixedKey, delimiter));
continue;
}
result[prefixedKey] = value;
}
return result;
}
exports.flattenObject = flattenObject;