2014-03-04 20 views
5

Ich habe eine Liste von Karten wie folgt aus:Sortieren einer Liste von Karten in Dart

var associations = [{'name': 'EG', 'description': 'Evil Genius'}, 
        {'name': 'NaVi', 'description': 'Natus Vincere'}]; 

var members = [ 
{'associationName': 'EG', 'firstName': 'Bob', 'lastName': 'Dylan', 'email': '[email protected]'}, 
{'associationName': 'NaVi', 'firstName': 'John', 'lastName': 'Malkovich', 'email': '[email protected]'}, 
{'associationName': 'EG', 'firstName': 'Charles', 'lastName': 'Darwin', 'email': '[email protected]'} 
]; 

Ich möchte einen Code schreiben, der die Liste der Mitglieder alphabetisch nach dem Nachnamen zuerst durch das, dann sortieren würde Vorname. Außerdem würde ich gerne Mitglieder finden können, deren Nachname mit einem bestimmten Buchstaben beginnt. Mit D würden wir beispielsweise Bob Dylan und Charles Darwin bekommen. Ich kann es mit einer einzelnen Karte oder einer einzelnen Liste verwalten, aber die Kombination einer Liste von Karten macht es schwieriger.

Danke für Ihre Hilfe.

+1

Was ist die 'associations' Liste? –

+0

@ GünterZöchbauer Es für Vereine. Eins zu viele. Die Schlüssel sind: "name" in der Tabelle "associations" und "associationName" in der Tabelle "members". – mezoni

Antwort

8

Zu sortieren:

members.sort((m1, m2) { 
    var r = m1["lastName"].compareTo(m2["lastName"]); 
    if (r != 0) return r; 
    return m1["firstName"].compareTo(m2["firstName"]); 
}); 

Filtern:

members.where((m) => m['lastName'].startsWith('D')); 
Verwandte Themen