Introduction
Dans ce laboratoire, nous allons explorer une fonction JavaScript qui aplatit un objet en ajoutant les chemins pour les clés. La fonction utilise la récursion et Object.keys() combinée avec Array.prototype.reduce() pour convertir chaque nœud feuille en un nœud de chemin aplati. À la fin de ce laboratoire, vous aurez une meilleure compréhension de la manière de manipuler les objets JavaScript et de les aplatir pour un traitement de données plus facile.
Aplatir un objet
Pour aplatir un objet en ajoutant les chemins pour les clés, suivez ces étapes :
- Ouvrez le Terminal/SSH et tapez
nodepour commencer à pratiquer la programmation. - Utilisez la récursion pour aplatir l'objet.
- Utilisez
Object.keys()combinée avecArray.prototype.reduce()pour convertir chaque nœud feuille en un nœud de chemin aplati. - Si la valeur d'une clé est un objet, appelez la fonction de manière récursive avec le
prefixapproprié pour créer le chemin à l'aide deObject.assign(). - Sinon, ajoutez la paire clé-valeur préfixée appropriée à l'objet accumulateur.
- Omettez le second argument,
prefix, sauf si vous voulez que chaque clé ait un préfixe.
Voici une implémentation d'exemple :
const flattenObject = (obj, prefix = "") =>
Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? `${prefix}.` : "";
if (
typeof obj[k] === "object" &&
obj[k] !== null &&
Object.keys(obj[k]).length > 0
) {
Object.assign(acc, flattenObject(obj[k], pre + k));
} else {
acc[pre + k] = obj[k];
}
return acc;
}, {});
Vous pouvez utiliser la fonction flattenObject comme ceci :
flattenObject({ a: { b: { c: 1 } }, d: 1 }); // { 'a.b.c': 1, d: 1 }
Sommaire
Félicitations ! Vous avez terminé le laboratoire Aplatir un objet. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.