Mehrdimensionale Arrays
Mathias
- javascript
Hallo
Ich möchte ein mehrdimensionales assoziatives Array erstellen:
var data = new Array();
user["tom"]["familienstand"] = "Ledig";
user["tom"]["wohnort"] = "München";
user["peter"]["familienstand"] = "Verheirate";
user["peter"]["wohnort"] = "Frankfurt";
user["peter"]["wohnort"]["strasse"] = "Bahnhofstrasse";
Problem ist, dass ich dann für jede Spalte die ich benutzen möchte, ein neues Objekt mit 'new Object()
' erstellen muss, was einfach nicht so schön und zweitens relativ mühsam ist weil das Javascript mit PHP generiert wird.
user["tom"] = new Object();
user["tom"]["familienstand"] = "Ledig";
user["tom"]["wohnort"] = "München";
user["peter"] = new Object();
user["peter"]["familienstand"] = "Verheirate";
user["peter"]["wohnort"] = "Frankfurt";
user["peter"]["wohnort"] = "Frankfurt";
user["peter"]["wohnort"] = new Object();
user["peter"]["wohnort"]["strasse"] = "Bahnhofstrasse";
Gibt's da eine bessere Lösung?
Gruss Mathias
Hallo
Ich möchte ein mehrdimensionales assoziatives Array erstellen:
var data = new Array();
user["tom"]["familienstand"] = "Ledig";
user["tom"]["wohnort"] = "München";
user["peter"]["familienstand"] = "Verheirate";
user["peter"]["wohnort"] = "Frankfurt";
user["peter"]["wohnort"]["strasse"] = "Bahnhofstrasse";
>
> Problem ist, dass ich dann für jede Spalte die ich benutzen möchte, ein neues Objekt mit '`new Object()`{:.language-javascript}' erstellen muss, was einfach nicht so schön und zweitens relativ mühsam ist weil das Javascript mit PHP generiert wird.
>
> ~~~javascript
> user["tom"] = new Object();
> user["tom"]["familienstand"] = "Ledig";
> user["tom"]["wohnort"] = "München";
> user["peter"] = new Object();
> user["peter"]["familienstand"] = "Verheirate";
> user["peter"]["wohnort"] = "Frankfurt";
> user["peter"]["wohnort"] = "Frankfurt";
> user["peter"]["wohnort"] = new Object();
> user["peter"]["wohnort"]["strasse"] = "Bahnhofstrasse";
>
Gibt's da eine bessere Lösung?
Gruss Mathias
bei "Verheirate" hast du das "t" vergessen ;-)
Hallo,
Ich möchte ein mehrdimensionales assoziatives Array erstellen:
... die in JavaScript, wie du ja auch festgestellt hast, schlichtweg Object-Objekte mit Object-Kindobjekten sind und mit Arrays in JavaScript wenig gemein haben.
Problem ist, dass ich dann für jede Spalte die ich benutzen möchte, ein neues Objekt mit '
new Object()
' erstellen muss, was einfach nicht so schön
Gibt's da eine bessere Lösung?
Nein.
Das heißt, du kannst »new Object()« durch die äquivalente Kurzschreibweise »{}« abkürzen, aber das ändert nicht daran, dass du jedes Unterobjekt von Hand erstellen musst.
und zweitens relativ mühsam ist weil das Javascript mit PHP generiert wird.
Na, wenn du den Code sowieso automatisierst ausgibst, sollte es wohl alles andere als mühsam sein.
Mathias
gruss Mathias
Ich möchte ein mehrdimensionales assoziatives Array erstellen:
http://forum.de.selfhtml.org/archiv/2004/7/84257/#m493695
http://forum.de.selfhtml.org/archiv/2004/7/85970/#m507500
http://forum.de.selfhtml.org/archiv/2004/8/86318/#m510547
var data = new Array();
user["tom"]["familienstand"] = "Ledig";
user["tom"]["wohnort"] = "München";
user["peter"]["familienstand"] = "Verheirate";
user["peter"]["wohnort"] = "Frankfurt";
user["peter"]["wohnort"]["strasse"] = "Bahnhofstrasse";
du benötigst eine reine objekt-struktur:
~~~javascript
var data = {
user: { /* man kann auch "verbotene" bezeichner erzeugen, wenn man deren namen in hochkommata fasst; */
"Thomas Müller": {
familyStatus: "ledig",
location: "München"
}, /* diese lassen sich dann aber nicht mehr ueber die "."-syntax referenzieren, sondern nur noch ueber ["propoertyName"]; */
"Peter Schneider": {
familyStatus: "verheiratet",
location: "Frankfurt"
}
}
};/*
var data = {
user: {
"Thomas Müller": {familyStatus: "ledig", location: "München"},
"Peter Schneider": {familyStatus: "verheiratet", location: "Frankfurt"}
}};
*/
die fuer den von Dir vorgegebenen zweiten fall
user["tom"] = new Object();
user["tom"]["familienstand"] = "Ledig";
user["tom"]["wohnort"] = "München";
user["peter"] = new Object();
user["peter"]["familienstand"] = "Verheirate";/*
user["peter"]["wohnort"] = "Frankfurt"; auskommentiert, weil Du das property
user["peter"]["wohnort"] = "Frankfurt"; "wohnort" sowiso gleich ueberschreibst */
user["peter"]["wohnort"] = new Object();
user["peter"]["wohnort"]["strasse"] = "Bahnhofstrasse";
eines aufgeschluesselten wohnortes so aussehen koennte:
~~~javascript
data = {
user: {
"Thomas Müller": {
familyStatus: "ledig",
residence: {
locationName: "München",
streetName: "Bahnstr.",
streetNumber: "1",
zipCode: "81827"
}
},
"Peter Schneider": {
familyStatus: "verheiratet",
residence: {
locationName: "Frankfurt",
streetName: "Bahnhofstr.",
streetNumber: "1",
zipCode: "65929"
}
}
}
};/*
data = {
user: {
"Thomas Müller": {familyStatus: "ledig",residence: {locationName: "München",streetName: "Bahnstr.",streetNumber: "1",zipCode: "81827"}},
"Peter Schneider": {familyStatus: "verheiratet",residence: {locationName: "Frankfurt", streetName: "Bahnhofstr.", streetNumber: "1", zipCode: "65929"}}
}};
*/
forumslinks zu objektliteralen:
- objekt-literale als "jsDatenbanken" vom 15. 12. 2003,
- literalschreibweise komplexer objekte: JSON - http://json.org/ vom 17. 08. 2004,
- Doppelpunkt notation vom 23. 10. 2004,
link zu "JSON - JavaScript Object Notation" von Mr. Douglas Crockford.
by(t)e by(t)e - peterS. - pseliger@gmx.net