-1
votes

Flutter - Élément de filtre avec le même nom dans la matrice

J'ai une tableaux avec plusieurs éléments, certains de ces éléments ont le même nom et la répétition via la matrice. J'ai besoin d'obtenir tous les éléments de ce tableau, d'obtenir un seul élément d'éléments répétés et de tous les éléments non répétés.

J'ai lu Ce document sur les tableaux à Dart mais n'a pas beaucoup d'aide. Je n'ai pas d'exemple de code, je ne sais pas comment je commence exactement. P>

faire, quiconque savez comment puis-je faire cela? P>

EDIT: Array Exemple strong> p>

Beaucoup d'erreurs dans Json, oubliez que c'est un exemple simple. P>

dataMaker.forEach((val) {
  print(val['fabricante']); //RETURN NAME
    if(filteredList!=val['fabricante']()){ //ERROR
    filteredList.add(val);
    }
  });


2 commentaires

Pouvez-vous partager votre code, il serait plus utile de résoudre le problème


Tableau de quel genre d'éléments? juste des cordes? Objets ? au moins fournir et exemple de votre tableau.


6 Réponses :


2
votes

Vous pouvez le faire via définir xxx


1 commentaires

Cette solution ne fonctionnera pas sur des objets personnalisés. Sur des objets personnalisés, vous devez remplacer == & hascode .



0
votes

Pourquoi ne pas utiliser un définir xxx

et il imprimera le suivant xxx


0 commentaires

0
votes

Si vous voulez simplement obtenir un éventail d'éléments uniques, vous pouvez utiliser "SET" ou "foreach"

working dartpad https://dartpad.dartlang.org/0a76f6dfe66a40b5e3f09ce74a739fe1 p>

Méthode 1 P>

void main() {
List list = [1,1,2,3,3,4,5,5,5,6,6];
List filteredList = [];
list.forEach((val) {
    if(filteredList.indexOf(val) == -1){
    filteredList.add(val);
    }
  });
  print(filteredList);
}

// answer
// [1, 2, 3, 4, 5, 6]


0 commentaires

1
votes

Ceci peut sembler un peu primitif, mais fonctionne comme prévu

[2, 5, 7, 9, 22, 6, 4]


0 commentaires

0
votes

Vous pouvez le faire de plusieurs manières, on peut utiliser array.folf fort>, par exemple xxx pre>

une autre solution plus élaborée utiliserait classes , pour cela, vous auriez besoin d'abord pour convertir votre JSON en classes régulières en utilisant JSON_SERIALISABLE par exemple, et remplacer le == strong> double opérateur égal. par exemple.
P>

List list = [Person(), Person(), Person()];
var result = list.toSet().toList() 


0 commentaires

0
votes

hosar, merci de me diriger dans la bonne direction!

Je n'avais pas besoin de @json_serializable pour un support Toset (), bien que je doive ajouter des décorateurs / annotations @Override. P>

class Person {
  String name;
  int age;
  Person({this.name, this.age});

  @override
  String toString() {
    return '$name $age';
  }

  @override
  bool operator ==(o) => o is Person && name == o.name && age == o.age;

  @override
  int get hashCode => name.hashCode + age.hashCode; //use a more reliable hashCode
}


0 commentaires