0
votes

Récupération de données de JSON Object avec des clés similaires

J'ai des données JSON renvoyées d'une demande AJAX GET. Cette demande renvoie différents ensembles de repas et comment les faire comprendre les ingrédients nécessaires et leurs mesures. Snippet of json Data (une clé: la valeur a été supprimée pour une visualisation plus facile): XXX PRE>

Code JavaScript / JQuery STRY> P>

$.each($(response), function(key, val) {
      let mealName = val.strMeal;
      let mealCategory = val.strCategory;
      let mealInstructions = val.strInstructions;
      let mealIngredient1 = val.strIngredient1;
      let mealIngredient2 = val.strIngredient2;
      ... // Variables continued
      ...
      let mealIngredient20 = val.strIngredient20;

      let mealMeasure1 = val.strMeasure1;
      let mealMeasure2 = val.strMeasure2;
      ... // Variables continued
      ...
      let mealMeasure20 = val.strMeasure20;

      console.log(mealName);
      console.log(mealCategory);
      console.log(mealInstructions);
      console.log(mealIngredient1);
      console.log(mealIngredient2);
      console.log(mealMeasure1);
      console.log(mealMeasure2);
    });


4 commentaires

manière efficace par rapport à quoi?


Dans l'extrait de code JavaScript, à l'heure actuelle, je reçois chaque ingrédient et chaque mesure individuellement et stockez dans une variable, mais je trouve que cette façon fait que mon code est répétitif et que certaines variables ne peuvent pas être utilisées en fonction du nombre d'ingrédients.


Dans ce cas au lieu d'affectations répétées, construisez un tableau hors de celui-ci


Mais comment puis-je continuer à vérifier si les touches stringredients1-20 contiennent une valeur?


3 Réponses :


2
votes

7 commentaires

Merci pour la réponse. J'ai ajouté ce code et il a réduit le nombre de lignes, mais je souhaite utiliser les ingrédients et leurs mesures à ajouter à mon site Web et que je trouve aussi de cette façon ne se débarrasse pas des valeurs nulles ou vides qui peuvent être dans l'objet JSON. (repas).


Mise à jour du code d'échantillon pour filtrer les éléments vides.


Je n'ai pas vu votre solution modifiée avant de poster mon commentaire précédent. Je vais essayer d'essayer de vous faire savoir comment ça se passe. Merci d'avance


Ajout d'un autre extrait montrant comment filtrer les clés non ingrédients.


Désolé pour la réponse tardive mais j'essaie de comprendre et d'utiliser les extraits de solutions suivants dans mon code. Cependant, il semble que le premier filtre ne se débarrasse pas des touches de stringredient qui ont une valeur vide ou nulle. Lors de la journalisation de la variable non vide à la console, elle renvoie le même tableau que la réponse (ou la variable de données de votre extrait de code).


Voyez-vous un comportement différent dans votre projet que ce que vous voyez lorsque vous exécutez les extraits ci-dessus? Le filtrage fonctionne pour moi ici, mais il est possible qu'il existe une différence de données ou de navigateur. Vous pouvez modifier le Fonction de filtre faire tout ce que vous en avez besoin pour faire. Gardez également à l'esprit que filtre ne modifie pas le tableau. Il renvoie un tableau nouveau avec uniquement les éléments qui passent le filtre.


Votre solution était correcte. J'avais oublié de passer à travers les données JSON une fois de plus pour obtenir le résultat souhaité, mais je suis arrivé à la fin. Merci encore pour votre aide!



0
votes

Vos propriétés d'objet de stringredient devraient être un tableau Strayredient [] que vous pouvez itérer sur dynamisme, de même avec STRMEEASURE []. Comme votre code est écrit maintenant, vous définissez beaucoup de propriétés non cotées selon la réception donnée.


0 commentaires

0
votes

Vous pouvez utiliser l'objet de la destruction d'objet et utiliser l'opérateur de repos pour obtenir les parties restantes.

p>

const data = {
	  "idMeal":"52768",
	  "strMeal":"Apple Frangipan Tart",
	  "strDrinkAlternate":null,
	  "strCategory":"Dessert",
	  "strIngredient1":"digestive biscuits",
	  "strIngredient2":"butter",
	  "strIngredient3":"Bramley apples",
	  "strIngredient4":"butter, softened",
	  "strIngredient5":"caster sugar",
	  "strIngredient6":"free-range eggs, beaten",
	  "strIngredient7":"ground almonds",
	  "strIngredient8":"almond extract",
	  "strIngredient9":"flaked almonds",
	  "strIngredient10":"",
	  "strIngredient11":"",
	  "strIngredient12":"",
	  "strIngredient13":"",
	  "strIngredient14":"",
	  "strIngredient15":"",
	  "strIngredient16":null,
	  "strIngredient17":null,
	  "strIngredient18":null,
	  "strIngredient19":null,
	  "strIngredient20":null,
	  "strMeasure1":"175g\/6oz",
	  "strMeasure2":"75g\/3oz",
	  "strMeasure3":"200g\/7oz",
	  "strMeasure4":"75g\/3oz",
	  "strMeasure5":"75g\/3oz",
	  "strMeasure6":"2",
	  "strMeasure7":"75g\/3oz",
	  "strMeasure8":"1 tsp",
	  "strMeasure9":"50g\/1\u00beoz",
	  "strMeasure10":"",
	  "strMeasure11":"",
	  "strMeasure12":"",
	  "strMeasure13":"",
	  "strMeasure14":"",
	  "strMeasure15":"",
	  "strMeasure16":null,
	  "strMeasure17":null,
	  "strMeasure18":null,
	  "strMeasure19":null,
	  "strMeasure20":null
};

const { idMeal,  strMeal, strDrinkAlternate, strCategory, ...rest } = data;
console.log(rest);


0 commentaires