Comprender el problema
A menudo nos encontramos con estructuras de datos complejas en aplicaciones JavaScript. Estas estructuras pueden ser objetos profundamente anidados, lo que dificulta su manipulación o procesamiento directo. Una operación común es aplanar estos objetos, transformándolos en una estructura más simple donde todas las propiedades están en el nivel superior.
En este blog, profundizaremos en un fragmento de código JavaScript que aplana efectivamente un objeto profundamente anidado. Desglosaremos el código línea por línea, explicando su lógica y funcionalidad.
El desglose del código
let user = { name : 'Chiranjit', address : { personal : { city: 'Kolkata', state: 'West Bengal' }, office : { city: 'Bengaluru', state: 'Karnataka', area: { landmark:'Waterside', post: 433101 } } } } var finalObj = {} const flatObjFn = (obj, parent) => { for(let key in obj){ if(typeof obj[key] === 'object'){ flatObjFn(obj[key], parent '_' key) }else{ finalObj[parent '_' key] = obj[key] } } } flatObjFn(user, 'user'); console.log(finalObj);
Explicación línea por línea
Inicializando el objeto de salida:
Definición de la función de aplanamiento:
Iterando a través de las propiedades del objeto:
Manejo de objetos anidados:
Manejo de valores primitivos:
Llamar a la función de aplanamiento:
Registrar el objeto aplanado:
¿Cómo funciona?
La función flatObjFn atraviesa recursivamente el objeto, descomponiendo las estructuras anidadas en un objeto plano. El parámetro principal realiza un seguimiento de la jerarquía de objetos, lo que permite que la función cree nombres de propiedades significativos en el objeto de salida.
Conectémonos en Twitter o LinkedIn
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3