Gruppe von array-Elementen basierend auf javascript-variable
Ich habe ein array, das erstellt wird dynamisch aus einem xml-Dokument suchen, so etwas wie dieses:
myArray[0] = [1,The Melting Pot,A]
myArray[1] = [5,Mama's MexicanKitchen,C]
myArray[2] = [6,Wingdome,D]
myArray[3] = [7,Piroshky Piroshky,D]
myArray[4] = [4,Crab Pot,F]
myArray[5] = [2,Ipanema Grill,G]
myArray[6] = [0,Pan Africa Market,Z]
Dieses array wird in einer for-Schleife und könnte enthalten, was basierend auf dem xml-Dokument
Was ich brauche, zu erreichen, ist die Gruppierung der Elemente dieses Arrays auf der Grundlage der Buchstaben, so dass alle array-Objekte, die den Buchstaben A, die in Ihnen gespeichert werden in einem anderen array als diese
other['A'] = ['item 1', 'item 2', 'item 3'];
other['B'] = ['item 4', 'item 5'];
other['C'] = ['item 6'];
Zu klären, ich brauche zu Sortieren, Elemente basierend auf Variablen innerhalb des Arrays, in diesem Fall die Buchstaben, so dass alle array-Objekte mit den Buchstaben " A " geht unter dem neuen array per Brief
Vielen Dank für jede Hilfe!!!
InformationsquelleAutor Tobias | 2011-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht verwenden arrays mit nicht-ganzzahlige Indizes. Ihre
other
variable sollte ein einfaches Objekt statt einem array. (Es funktioniert auch mit arrays, aber es ist nicht die beste option.)Gegeben ein Element in
myArray
[1,"Melting Pot",""], dein Beispiel macht es nicht klar, ob Sie speichern möchten, dass die ganze Sache inother
oder nur die string-Feld in das zweite Feld position - Ihr Beispiel-Ausgabe, nur hat Saiten, aber Sie nicht übereinstimmen Ihre Saiten inmyArray
. Mein code ursprünglich gespeichert, nur der string-Teil, indem Sie sagen:other[letter].push(myArray[i][1]);
, aber einige anonyme person bearbeitet hat, meinen post zu ändern, umother[letter].push(myArray[i]);
die speichert alle [1,"Melting Pot","A"]. Bis Sie herausfinden, was Sie wollen zu tun, ich habe Euch die basic-code, die Sie benötigen.Ohh es funktioniert!! Vielen Dank!! 🙂
anonyme person hat, bearbeitet meine post" LOL. Ich hinterließ einen Kommentar, abgesehen von SO die automatische Protokollierung der Bearbeitung der Geschichte, macht nicht aus, wie viel von einer Anonymität zu mir. 😀
Sorry, ja, ich sehe Ihren Kommentar (sowohl Ihre Kommentare) nun aber an der Zeit, die ich schrieb, SO wurde die Ablehnung zu zeigen, mir die edit-history und ich dachte, es muss sein, weil Sie gemacht hatten, die Sie Bearbeiten im anfänglichen Aktivierungszeitraum, wenn eine Geschichte nicht gehalten. Ironischerweise, wenn Sie Ihre änderung durch ging, war ich mitten in der Bearbeitung, es selbst ausdrücklich darauf hinweisen, dass hatte ich gespeichert nur der Titel Teil und zu Fragen, was die eigentliche Anforderung war. SO tauchte eine Warnung über das edit-aber würde nicht sagen, mir die Einzelheiten aus irgendeinem Grund.
P. S. Danke für die demo @Shef.
InformationsquelleAutor nnnnnn
Versuchen groupBy-Funktion angeboten von http://underscorejs.org/#groupBy
InformationsquelleAutor slv007
Erstellen Sie ein leeres JavaScript-Objekt, und weisen Sie ein array, um es für jeden Buchstaben.
Demo fiddle hier.
InformationsquelleAutor Jose Faeti
Diese code für Ihre
example
.InformationsquelleAutor user278064
Good ol' ES5 Array Extras sind toll.
InformationsquelleAutor kzh
Versuchen -
InformationsquelleAutor Jayendra