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"},
];
3 Réponses :
arr = arr.toSet().toList() check toSet() docs
J'ai suivi mais le résultat ne change toujours pas
pourriez-vous essayer d'imprimer simplement `arr.toSet (). toList ()`
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";
}
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 .
Voilà:
arr = arr.asMap().map((i, m)=> MapEntry<String, Map>(m["name"], m)).values.toList()
Vous êtes le bienvenu. Marquer la réponse comme correcte si cela a fonctionné pour vous