Comprendre le problème
Nous rencontrons souvent des structures de données complexes dans les applications JavaScript. Ces structures peuvent être des objets profondément imbriqués, ce qui rend difficile leur manipulation ou leur traitement direct. Une opération courante consiste à aplatir ces objets, en les transformant en une structure plus simple où toutes les propriétés sont au niveau supérieur.
Dans ce blog, nous examinerons un extrait de code JavaScript qui aplatit efficacement un objet profondément imbriqué. Nous décomposerons le code ligne par ligne, expliquant sa logique et ses fonctionnalités.
La répartition du code
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);
Explication ligne par ligne
Initialisation de l'objet de sortie :
Définition de la fonction d'aplatissement :
Itération via les propriétés de l'objet :
Gestion des objets imbriqués :
Gestion des valeurs primitives :
Appel de la fonction d'aplatissement :
Enregistrement de l'objet aplati :
Comment ça marche ?
La fonction flatObjFn parcourt l'objet de manière récursive, décomposant les structures imbriquées en un objet plat. Le paramètre parent assure le suivi de la hiérarchie des objets, permettant à la fonction de créer des noms de propriétés significatifs dans l'objet de sortie.
Connectons-nous sur Twitter ou LinkedIn
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3