2017-02-15 3 views
0

Ich habe etwas ähnlich das folgende Objekt unter:Sortieren ein Javascript-Optionen Wert alphabetisch

EUR: { name: 'Europe', countries: { FR: { name: 'France', cities: {} }, DE: { name: 'Germany', cities: {} }, ES: { name: 'Spain', cities: {} } } }

Ich versuche, einen Weg zu finden, Länder in alphabetischer Reihenfolge auf Länder sortieren Sie dann den Namen des jeweiligen Landes zB Frankreich, Spanien, Deutschland. Der Ansatz, den ich eingehen wollte, bestand darin, diese zuerst in ein Array zu zerlegen und neu aufzubauen.

Ich fragte mich, ob jemand irgendwelche anderen Ansätze hat, die ich vermisse, sie könnten mir helfen?

+6

Sie verpassen ein (oder mehrere) Array/s zum Sortieren. Objekte haben eigentlich keine Reihenfolge. –

+0

Wenn Ihnen die Reihenfolge wirklich wichtig ist, verwenden Sie ein Array. JavaScript-Objekte Eigenschaften haben nicht wirklich Reihenfolge. – bobjoe

+0

Ans: http://stackoverflow.com/questions/17684921/sort-json-object-in-javascript –

Antwort

0

Ich habe so etwas wie dies in der Vergangenheit getan hat, etwas Ordnung zu einem Objekt zu bringen:

EUR: { 
    name: 'Europe', 
    countries: { 
     FR: { 
      name: 'France', 
      cities: {} 
     }, 
     DE: { 
      name: 'Germany', 
      cities: {} 
     }, 
     ES: { 
      name: 'Spain', 
      cities: {} 
     }, 
     order : ['DE', 'ES', 'FR'] 
    } 
} 

Jedes Objekt würde ein order Schlüssel erhalten, die für dieses Objekt ein Array des Schlüssels ist. Wenn Sie dann über das Objekt iterieren, können Sie die Reihenfolge mit dem Schlüssel order beibehalten. Der Nachteil ist, dass Sie nicht nur das Objekt pflegen (hinzufügen, aktualisieren, entfernen) müssen, sondern auch den Schlüssel order.

Obwohl ich sehr empfehlen würde, ein Array von Objekten zu erstellen, anstatt die Objekte zu verschachteln, da Objektschlüssel keine Reihenfolge haben.

EUR: { 
    name: 'Europe', 
    countries: [{ 
      name: 'France', 
      abbr: 'FR', 
      cities: {} 
     },{ 
      name: 'Germany', 
      abbr: 'DE', 
      cities: {} 
     },{ 
      name: 'Spain', 
      abbr: 'ES', 
      cities: {} 
     }] 
} 

Dann könnte man durch die EUR.countries Array iterieren und sortieren, indem entweder die .name-Taste oder die .abbr Taste.

EDIT: Ich sollte wahrscheinlich tatsächlich die Iteration zeigen, um sie zu sortieren, oder?

Ich mache die Namen in Kleinbuchstaben, weil die Sortierfunktion mit Unicode funktioniert. Wenn es in der falschen Reihenfolge sortiert wird, drehen Sie einfach das Zeichen um.