0
votes

Comment puis-je obtenir un tableau dans un objet de réponse de requête dans javascript / react?

Comment puis-je obtenir le tableau «adresse» dans l'objet de réponse de demande ci-dessous?

{
    "title": "MRS.",
    "name": "Aluno",
    "lastName": "3",
    "birthday": "2019-08-31",
    "address": [
        {
            "addressName": "rua 2",
            "zipCode": "13901264",
            "city": "amparo",
            "state": "sp",
            "country": "brasil"
        },
        {
            "addressName": "rua 2",
            "zipCode": "13901264",
            "city": "amparo",
            "state": "sp",
            "country": "brasil"
        },
    ]
}

Si j'enregistre cet objet dans un état appelé customer et imprime console.log (customer.address) cela fonctionne bien et je peux voir les informations d'adresse, mais je ne peux pas utiliser les méthodes map ou forEach comme customer.address.forEach, je reçois une erreur :(


9 commentaires

l' address la propriété est un objet et non un tableau. C'est pourquoi les méthodes de tableau telles que forEach ne fonctionneront pas dessus, Object.values(customer.address) vous donnera un tableau de valeurs sur lesquelles vous pouvez utiliser forEach . De même Object.keys pour obtenir un tableau des clés et Object.entries pour obtenir un tableau de paires [key, value]


J'ai demandé mal, je veux obtenir l' objet d' adresse à la place du tableau d' adresses haha


Parfois, l'itération d'un objet bien défini est une odeur de code. Vous pouvez utiliser les propriétés directement console.log(customer.address.addressName, customer.address.city) etc.


Bien, regardez la question. Je l'ai corrigé. Je veux obtenir le tableau d'adresses, désolé !!


Quelle erreur obtenez vous? Pouvez-vous s'il vous plaît montrer plus de votre code, avec le code que vous avez maintenant, il devrait fonctionner. Vous essayez probablement d'accéder à l' address avant que le customer n'ait été renseigné avec les données


j'essaye de faire quelque chose comme ça, uniquement pour accéder aux informations du tableau des réservations prntscr.com/vjrula


l'adresse dans le post-question est un exemple de ceci, de ce que je voudrais vraiment


Object.values(customer.reservations).forEach() s'exécutera avant votre callback useEffect et .then() , ce qui signifie que customer.reservations sera vide / non défini.


Comment puis-je y remédier?


3 Réponses :


0
votes

Vous pouvez utiliser des méthodes telles que map, reduce, filter, forEach uniquement sur un Array non sur un Object .

l' address clé a une valeur en tant object , pour la lire, vous pouvez simplement utiliser

Object.values(customer.address).forEach((value) => {
  console.log(value);
})

// OR

Object.keys(customer.address).forEach((key) => {
  console.log(customer.address[key]);
})

Si vous souhaitez parcourir les propriétés

console.log(customer.address.addressName) //street x
console.log(customer.address.zipCode) //13901264


3 commentaires

Pouvez-vous mettre à jour la question avec la réponse / sortie attendue?


J'ai demandé mal, je veux obtenir l'objet d'adresse à la place du tableau d'adresses haha


Bien, regardez la question. Je l'ai corrigé. Je veux obtenir le tableau d'adresses, désolé !!



0
votes

La propriété ne lui address pas un tableau, si vous avez besoin de le convertir en un tableau d'un élément, vous pouvez utiliser:

const valueAsArray = [response.address]


0 commentaires

0
votes
Object.keys(out.address).map(key => {
    console.log(out.address[key]);
    // etc ...
})

0 commentaires