3
votes

Supprimer l'élément coïncide dans le tableau "distinct"

Je veux supprimer l'élément qui coïncide dans le tableau et produire un tableau distinct

var arr = [
  {"name": "Peter"},
  {"name": "Hana"},
  {"name": "Jone"},
];

Résultat:

var arr = [
  {"name": "Peter"},
  {"name": "Hana"},
  {"name": "Jone"},
  {"name": "Peter"},
  {"name": "Peter"},
];


0 commentaires

3 Réponses :


0
votes
arr = arr.toSet().toList() 
check toSet() docs

2 commentaires

J'ai suivi mais le résultat ne change toujours pas


pourriez-vous essayer d'imprimer simplement `arr.toSet (). toList ()`



0
votes

Vous pouvez créer votre propre classe pour analyser les données, puis comparer les objets et filtrer votre liste.

Votre classe Person

      var arr = [
        {"name": "Peter"},
        {"name": "Hana"},
        {"name": "Jone"},
        {"name": "Peter"},
        {"name": "Peter"},
      ];

      final objectList = arr.map((json) => Person.from(json)).toList();

      var filteredList = [];
      objectList.forEach(
        (item) {
          if (!(filteredList.contains(item))) {
            filteredList.add(item);
          }
        },
      );

      print(filteredList);

    class Person {
      final String name;

      Person({this.name});

      factory Person.from(dynamic json) => Person(name: json["name"]);

      Map<String, dynamic> toJson() => {"name": name};

      @override
      bool operator ==(Object other) =>
          identical(this, other) || other is Person && name == other.name;

      String toString() => "name : $name";
    }


2 commentaires

vous pouvez marquer la réponse comme résolue si cela vous aide :)


Si vous remplacez == , vous devez également remplacer hashCode , sinon les ensembles ne fonctionneront pas. Deux objets "égaux" doivent également avoir le même hashcode. L'inverse n'est pas nécessairement vrai. Voir api.dartlang.org/stable/2.2.0 /dart-core/Object/hashCode.html ‌.



1
votes

Voilà:

arr = arr.asMap().map((i, m)=> MapEntry<String, Map>(m["name"], m)).values.toList()


1 commentaires

Vous êtes le bienvenu. Marquer la réponse comme correcte si cela a fonctionné pour vous