J'ai cette structure ci-dessous et je veux faire boucler la hiérarchie sans manquer d'objet. La raison pour laquelle je veux boucler à travers la hiérarchie est que je veux tourner ceci dans une structure plane. Donc, essentiellement, je vais prendre chaque objet et le déplacer à un autre tableau qui a la structure que je veux. Je veux juste savoir comment accéder aux enfants. P> Le résultat recherché: p> Je suis un peu nouveau à JavaScript, et je n'ai pas t vraiment savoir où commencer, mais cet exemple que j'ai donné n'est pas identique à celui que je travaille, donc je veux juste le principe afin que je puisse le mettre en œuvre moi-même dans mon code actuel. P> < / p>
3 Réponses :
Vous pouvez combiner la méthode array.flat () code> et Cette réponse pour aplatir les objets récursivement.
L'utilisation de fonctions récursives est le moyen plus rapide d'accomplir cela. P>
Pour obtenir une structure plate, vous pouvez utiliser p> réduire la méthode code> pour créer une fonction récursive. const data = {"countries":[{"name":"Denmark","id":"APA1","children":[{"name":"Zealand","id":"APA1.1","parentId":"APA1","children":[{"name":"Copenhagen","id":"APA1.1.1","parentId":"APA1.1","children":[{"name":"Dublin","id":"ANA1","parentId":"APA1.1.1.1","hostNames":[{"ip":"20.190.129.1"},{"ip":"20.190.129.2"}]}]}]},{"name":"Jutland","id":"APA1.2","parentId":"APA1","children":[{"name":"Nordjylland","id":"APA1.2.1","parentId":"APA1.2","children":[{"name":"Aalborg","id":"APA1.2.1.1","parentId":"APA1.2.1","children":[{"name":"Risskov","id":"ANA3","parentId":"APA1.2.1.1","hostNames":[{"ip":"40.101.81.146"}]},{"name":"Brabrand","id":"ANA4","parentId":"APA1.2.1.1","hostNames":[{"ip":"43.203.94.182"}]}]}]}]}]}]}
function flat(data) {
return data.reduce((r, { children, ...rest }) => {
if (children) r.push(...flat(children))
r.push(rest)
return r;
}, [])
}
const result = flat(data.countries)
console.log(result)
Vous pouvez prendre une approche p> plattmap code> pour l'appel récursif d'un rappel à l'aplatissement. .as-console-wrapper { max-height: 100% !important; top: 0; }
S'il vous plaît ajouter votre essai et le résultat recherché.