0
votes

Comment puis-je boucler à travers des tableaux imbriqués?

J'ai cette structure ci-dessous et je veux faire boucler la hiérarchie sans manquer d'objet. XXX

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.

Le résultat recherché: xxx

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>


1 commentaires

S'il vous plaît ajouter votre essai et le résultat recherché.


3 Réponses :


1
votes

Vous pouvez combiner la méthode array.flat () et Cette réponse pour aplatir les objets récursivement. L'utilisation de fonctions récursives est le moyen plus rapide d'accomplir cela.


0 commentaires

1
votes

Pour obtenir une structure plate, vous pouvez utiliser réduire la méthode code> pour créer une fonction récursive.

p>

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)


0 commentaires

1
votes

Vous pouvez prendre une approche plattmap code> pour l'appel récursif d'un rappel à l'aplatissement.

p>

.as-console-wrapper { max-height: 100% !important; top: 0; }


0 commentaires