JavaScript Alternative für assoziative Arrays

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.552
Hi,

Angenommen ich habe eine Einkaufsliste:
$array['Eier'] = 3;
$array['Brod'] = 10;
$array['Käse'] = 5;

Diese konnte ich dann in php nach Schlüssel oder Wert sortieren, je nachdem, was ich gerade brauche.

Wie kann ich das ganze ich JavaScript bewerkstelligen, da gibt es ja wohl keine assoziativen Arrays.

Vielen Dank

PS: Habe mich dazu entschlossen einige Sachen per ajax auf clienten Seite zu laden und dort nach Wunsch zu sortieren.
 
In JS gibts sehr wohl "assoziative" Arrays, nur sind es im Prinzip Objekte.
Code:
var a = {};
a["foo"] = "bar";
a.bar = "foo";
Zweierlei Schreibweisen kannst du dann anwenden und somit ergeben sich einige Spielereien.
 
Ein Ansatz wäre, das ganze in ein Array aus Objekte zu packen und dann dieses Array mit einem eigenen Vergleichsoperator zu sortieren.
Code:
var data={"foo":"bar","blub":"blah"};
var arr=[];
for(var i in data){
arr.push({"index":i,"value":data[i]});
}
arr.sort(function(a,b){
return a.index-b.index;
});
 
Einfach nach JSON serialisieren und dann im Browser durch JSON.parse() schicken. JSON ist quasi Standard bei Ajax, alle Programmiersprachen haben dafür Bibliotheken und es ist auch sicherer als was selbstgebautes.
 
Yuuri schrieb:
In JS gibts sehr wohl "assoziative" Arrays, nur sind es im Prinzip Objekte.

Eigentlich genau umgekehrt. Was man in Javascript "Objekte" nennt sind im Grunde nur assoziative Arrays. Vorallem wenn man sich vergegenwärtigt, dass Funktionen in Javascript wie normale Werte gehandhabt werden und die "Methoden" in Javascript nur Key-Value Paare sind wo das Value eine Funktion ist :)
 
[klugscheißmodus]
Code:
>>> typeof []
"object"
>>> typeof {}
"object"
[/klugscheißmodus]

;)
 
Zurück
Oben