0
votes

Est-il possible de déstructurer un objet imbriqué sans connaître la clé du parent?

Je me demandais s'il est possible de déstructurer un objet imbriqué sans connaître la clé de l'objet parent?

La raison de ce faire est que les erreurs de validation de la mangouste renvoient un objet dans les erreurs code> clé et chaque entrée de cet objet est un autre objet dans lequel la clé est le nom du champ qui a une erreur. p> xxx pré>

donc le résultat peut donc être quelque chose comme p>

let message = {}
for (var k in data) {
  var { path, name } = data[k]
  message[path] = name
}


7 commentaires

Pouvez-vous montrer le résultat attendu?


Que feriez-vous la destructeur?


Vous ne pouvez pas vous déshabiller à travers une boucle, bien que vous peut récupérer la valeur sans vous déshabiller. Qu'est-ce qui varie exactement dans le code que vous avez posté et quelle est la sortie souhaitée?


@Certeperferformance J'ai mis à jour le code.


Changer au message [chemin] = nom et ça marche


@Certeperformance, alors c'est le moyen unique de le faire, non? Donc, il est probablement préférable d'éviter la déstructuration et le message [Data [k] [Chemin] = DATA [K] [NOM] ?


Cela a l'air un peu déroutant, je préfère votre méthode actuelle avec la déstructuration (changez simplement à la notation de support)


4 Réponses :


0
votes

Vous pouvez prendre les valeurs et cartographier de nouveaux objets. Attribuez ensuite tous les objets à un seul objet.

p>

const
    data = { name: { path: 'name', name: 'The error message' }, email: { path: 'email', name: 'Another error message' } }
    result = Object.assign({}, ...Object
        .values(data)
        .map(({ path, name }) => ({ [path]: name }))
    );

console.log(result);


2 commentaires

Pas assez de description pour le processus de codage


J'ai mis à jour la description avec la sortie que j'aimerais réaliser.



0
votes

Utiliser objet.values ​​ code> comme:

p>

const data = { name: { path: 'name', name: 'The error message' } };

const { path, name } = Object.values(data)[0];

console.log(path);
console.log(name);


0 commentaires

0
votes

const data = {
  name: {
    path: 'name',
    name: 'The error message'
  }
}

const {path, name} = Object.values(data)[0];

console.log(path, name);


0 commentaires

0
votes

Oui, vous pouvez faire à l'intérieur pour dans code> en prenant la clé et en accédant à la valeur et en accédant à la valeur et à la destructurer

p>

const data = {
  name: {
    path: 'name',
    name: 'The error message'
  }
}

for(let key in data){
  let { path, name } = data[key]
  console.log('name --->',name)
  console.log('path --->',path)
}


0 commentaires