3 votes

Comment puis-je filtrer List<Map<String, dynamic>> pour obtenir une valeur dans Flutter?

J'ai des données en json que je charge dans List> en utilisant await jsonDecode.

Par exemple, j'ai ;

  1. montant = 12500
  2. calibre = 24

et j'ai besoin de filtrer le son pour obtenir la valeur de maturité : 689.19

Aussi, si j'ai un montant = 12500 et une valeur = 689.19, j'ai besoin d'obtenir le calibre qui est 24.

Comment puis-je filtrer les données JSON List> pour obtenir une valeur dans Flutter ?

[
   {"amount": "5000", "caliber": "12", "maturity":  "484.25"},
   {"amount": "5000", "caliber": "24", "maturity":  "275.67"},
   {"amount": "7500", "caliber": "12", "maturity":  "726.38"},
   {"amount": "7500", "caliber": "24", "maturity":  "413.51"},
   {"amount": "10000", "caliber": "12", "maturity":  "968.50"},
   {"amount": "10000", "caliber": "24", "maturity":  "551.35"},
   {"amount": "12500", "caliber": "12", "maturity":  "1210.63"},
   {"amount": "12500", "caliber": "24", "maturity":  "689.19"},
   {"amount": "15000", "caliber": "12", "maturity":  "1452.76"},
   {"amount": "15000", "caliber": "24", "maturity":  "827.03"},
   {"amount": "15000", "caliber": "12", "maturity":  "1694.89"},
   {"amount": "17500", "caliber": "24", "maturity":  "964.87"},
   {"amount": "17500", "caliber": "36", "maturity":  "727.66"},
   {"amount": "17500", "caliber": "48", "maturity":  "613.53"},
   {"amount": "17500", "caliber": "60", "maturity":  "548.44"},
   {"amount": "20000", "caliber": "12", "maturity":  "1937.01"},
   {"amount": "20000", "caliber": "24", "maturity":  "1102.71"}
]

MISE À JOUR : Avec l'aide de @Muldec, j'y suis enfin arrivé.

D'abord, je charge le son ci-dessus dans une liste comme indiqué ci-dessous. Et j'applique la réponse de @Muldec et ça a fonctionné.

List myList = List.from(jsonDecode(jsonFastCalculation) as List);
final item = myList.firstWhere((e) => e['amount'] == '12500' && e['caliber'] == '24');
print(item['maturity']);

5voto

Muldec Points 3400

Vous pouvez utiliser les méthodes firstWhere ou where sur votre liste pour obtenir l'élément Map dont vous avez besoin ou une liste de Map en fonction de vos critères de recherche.

En supposant que vous êtes absolument sûr que vos critères de recherche ne vous donneront qu'un seul élément (ou que vous vous souciez seulement du premier élément répondant à vos critères), voici un exemple de code avec firstWhere:

List> myList = ....;

final item = myList.firstWhere((e) => e['amount'] == '12500' && e['caliber'] == '24');
print(item['maturity']);

Trouver le calibre en fonction du montant et de la maturité est simplement une question de modifier le test dans la méthode firstWhere

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X