lire les atsortingbuts et propriétés d’un object en utilisant la récursivité?

Je me demande s’il serait possible pour moi d’utiliser une fonction récursive pour lire tous les atsortingbuts et propriétés d’un object, y compris les propriétés nestedes et autres. par exemple, si j’ai un object:

var mObj = {}; mObj.counsortinges = []; mObj.country = {}; mObj.country.states = []; mObj.country.state = {}; mObj.country.state = {}; 

Je suis sûr que vous obtenez l’image. S’il ne s’agissait que d’un object simple, alors je peux utiliser une boucle “for in”, et peut-être nestede “for”, un object comporte de nombreux niveaux nesteds, puis l’utilisation de boucles “for” nestedes devient quelque peu chaos. Je pensais que ce serait merveilleux d’utiliser la récursivité. Toute aide utile à cela serait très appréciée.

Je vous remercie.

Voici un exemple rapide qui fait cela au cas où vous auriez des problèmes.

 var level = ''; var readProperties = function(val) { if (Object.prototype.toSsortingng.call(val) === '[object Object]') { for (var propertyName in val) { if (val.hasOwnProperty(propertyName)) { console.log(level + propertyName + ':'); level += ' '; readProperties(val[propertyName]); } } } else { console.log(level + val); level = level.subssortingng(0, level.length - 2); } } 

Même problème que OP, mais impossible de faire fonctionner la solution acceptée. Voici ce que j’ai fini par faire:

 function foreachAtsortingbute(object, handleAtsortingbuteName, handleAtsortingbuteValue) { var atsortingbuteNames = []; function recursion(object) { for ( var atsortingbute in object) { if (typeof object[atsortingbute] == 'object') { atsortingbuteNames.push(atsortingbute); recursion(object[atsortingbute]); atsortingbuteNames = atsortingbuteNames.slice(0, atsortingbuteNames.length - 1); } else { handleAtsortingbuteName(atsortingbuteNames.join(".") + "." + atsortingbute); handleAtsortingbuteValue(object[atsortingbute]); } } } recursion(object); } var atsortingbuteName = ""; var handleAtsortingbuteName = function(name) { atsortingbuteName = name; }; var handleAtsortingbuteValue = function(value) { console.log(atsortingbuteName + "=" + value); }; var data = { var1 : { asdf : 123 }, var2 : 321 }; foreachAtsortingbute(data, handleAtsortingbuteName, handleAtsortingbuteValue);