0
votes

Convertir un objet imbriqué

Quelle est la meilleure façon de convertir ...? xxx

à xxx

merci pour votre attention

edit: mon mauvais. J'ai une question corrigée. Besoin de toutes les paires d'objet imbriqué. La profondeur est constante


2 commentaires

Le meilleur moyen est une solution avec laquelle vous obtenez le résultat dont vous avez besoin. Qu'est-ce que tu as essayé jusque-là?


Un objet ne peut avoir qu'une seule propriété avec un nom donné; Il ne peut y avoir deux propriétés "D" dans le même objet.


3 Réponses :



1
votes

Solution de base

One Possibilité: P>

p>

// helper
const findLeafPaths = (o, path = [[]]) => 
  typeof o == 'object' && !(Array.isArray(o))
    ? Object .entries (o) .flatMap (
        ([k, v]) => findLeafPaths (v, path).map(p => [k, ...p])
      ) 
    : path

// main function
const convert= (obj) => 
  findLeafPaths (obj) .reduce ((a, ps) => ({
    ...a, 
    [ps.join(' - ')]: ps .reduce ((o, p) => (o || {}) [p], obj)
  }), {})

// demonstration
const obj = {
  A: { B: [0, 0, 0, 0] },
  D: {
    B: [0, 0, 0, 0],
    C: [0, 0, 0, 0],
    E: {
      F: 42
    }
  }
}

console .log (convert (obj))


0 commentaires

1
votes

Vous pouvez adopter une approche dynamique pour tout département d'objets imbriqués en stockant le chemin et l'objet de base et l'objet réel.

p>

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


0 commentaires