/** * Flattens an array of objects by converting each object into a flat structure. * * @param {Array} dataArray Array of objects to be flattened * @return {Array} Array of flattened objects */ function flatten(dataArray) { return dataArray.map(item => flattenObj(item.__data)); } /** * Recursively flattens an object, converting nested properties into a single level object * with keys representing the original nested structure. * * @param {Object} data The object to be flattened * @param {String} [prefix=''] Optional prefix for nested keys * @return {Object} Flattened object */ function flattenObj(data, prefix = '') { let result = {}; try { for (let key in data) { if (!data[key]) continue; const newKey = prefix ? `${prefix}_${key}` : key; const value = data[key]; if (typeof value === 'object' && value !== null && !Array.isArray(value)) Object.assign(result, flattenObj(value.__data, newKey)); else result[newKey] = value; } } catch (error) { console.error(error); } return result; } module.exports = { flatten, flattenObj, };