2 dimensionales Objekt
Nico
- javascript
0 Felix Riesterer2 molily0 rabby
Hi,
habe ein Objekt-Objekt, also z.B. mit Werten wie:
arrobjectsdata['abc']['def']='xyz';
Nun wollte ich mir eine Ausgabe des 2dimensionalen Objekts schreiben, aber irgendwie passiert nicht das, was ich gerne hätte, sondern es werden Funktionen uvm. am Ende in src landen :(
var src='';
for(var oname in arrobjectsdata)
{
arrdata=arrobjectsdata[oname];
for(var dname in arrdata)
{
v=arrdata[dname];
src+='arrdata['+oname+']['+v+'['+v+"\n";
}
}
Wo ist der Hund drin?
Thx
Lieber Nico,
ich denke, das sollte so aussehen:
var src = '';
for(var oname in arrobjectsdata)
{
arrdata=arrobjectsdata[oname];
for(var dname in arrdata)
{
src += 'arrobjectsdata['+oname+']['+dname+'] = "' + arrdata[dname] + '"\n';
}
}
Liebe Grüße,
Felix Riesterer.
Hallo,
Nun wollte ich mir eine Ausgabe des 2dimensionalen Objekts schreiben, aber irgendwie passiert nicht das, was ich gerne hätte, sondern es werden Funktionen uvm. am Ende in src landen :(
Wie meinst du das?
Wenn in deinem Objekt Funktionen gespeichert sind, dann tauchen sie auch beim Durchlaufen mit for-in auf.
Es tauchen auch solche Funktionen auf, die dem Objekt über prototypische Erweiterung verpasst wurden (verschiedene JavaScript-Frameworks erweitern Array- oder sogar alle Objekte).
Diese prototypisch vererbten Methoden kannst du herausfiltern, indem du prüfst, ob es sich um eine eigene, nicht vererbte Eigenschaft handelt. Dafür gibt es die Methide hasOwnProperty.
for (var property in object) {
if object.hasOwnProperty(property) {
alert("Das Objekt hat die Eigenschaft selbst, sie ist nicht vererbt.");
}
}
Mathias
Heho,
for(var oname in arr)
{
arrdata=arr[oname];
if(arr.hasOwnProperty(oname))
{
for(var dname in arrdata)
{
if(arrdata.hasOwnProperty(dname))
{
src += 'arrobjectsdata['+escape(oname)+']['+escape(dname)+']='+escape(arrdata[dname])+'\n';
}
}
}
}
Schönen Abend noch