Construction de liste de propriétés récursive
Pour parcourir un objet complexe et extraire une liste hiérarchique de ses propriétés, envisagez d'utiliser une fonction récursive. Cette technique capture efficacement les relations imbriquées au sein de la structure de l'objet.
Notre exemple d'objet, avec ses propriétés imbriquées, sert d'exemple :
var object = {
aProperty: {
aSetting1: 1,
aSetting2: 2,
aSetting3: 3,
aSetting4: 4,
aSetting5: 5
},
bProperty: {
bSetting1: {
bPropertySubSetting : true
},
bSetting2: "bString"
},
cProperty: {
cSetting: "cString"
}
}
Pour construire hiérarchiquement la liste souhaitée de clés de propriété, nous pouvons utiliser une fonction récursive comme celle-ci :
function iterate(obj, stack) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property], stack '.' property);
} else {
console.log(property " " obj[property]);
$('#output').append($("").text(stack '.' property))
}
}
}
}
iterate(object, '')Cette fonction fonctionne de manière récursive, en commençant par l'objet initial et une pile vide. Au fur et à mesure qu'elle explore l'objet, elle construit la chaîne de pile représentant le chemin hiérarchique vers chaque propriété.
- Pour les propriétés de type primitif, la fonction enregistre la clé de propriété et sa valeur.
- Pour objets imbriqués, la fonction s'appelle récursivement, en transmettant l'objet imbriqué et en ajoutant la clé de propriété à la chaîne de pile.
Le résultat est une liste de clés de propriété, capturant la structure hiérarchique de l'objet d'origine. .
Cette solution intègre efficacement la récursivité à l'itération des propriétés, offrant une approche complète pour construire une liste hiérarchique de propriétés d'objet.
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