NEWS
[gelöst] Enums werden nur teilw. ausgelesen
-
Hi allerseits,
ich hab ein Problem mit Enums, dabei ist es egal ob rooms oder functions.rooms = getEnums('rooms'); // Lade alle Raeume for (var i in rooms){ // loop ueber alle Raeume log("Raum " + rooms[i].name + " gefunden.","info"); };
Sollte eigentlich alle Räume anzeigen. Die Ausgabe sieht aber so aus:
13:04:10.188 info javascript.0 Start javascript script.js.common.TestEnumFunctions 13:04:10.188 info javascript.0 script.js.common.TestEnumFunctions: Raum [object Object] gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum [object Object] gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum [object Object] gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Dachboden gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Bad gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Flur EG gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Flur OG gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum [object Object] gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Werkstatt gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum [object Object] gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Gewaechshaus gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Garten gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Zelt gefunden. 13:04:10.189 info javascript.0 script.js.common.TestEnumFunctions: Raum Draussen gefunden.
Die Gesamtzahl der Einträge ist korrekt, Woher kommen die [object Object] mittendrin? Die ersten 3 z.B. wären eigentlich Wohnzimmer, Schlafzimmer, Kueche. Keiner der Räume ist ohne Eintrag falls das relevant sein sollte.
Was mach ich falsch, bzw. läuft da falsch? -
@Pittini Bau mal ein weiteres log mit ein:
if(typeof rooms[i].name != "string") log(JSON.stringify(rooms[i].name);
Ich vermute mal, dass die Eigenschaft name ein objekt ist mit localisierung:
name: { de: "Hier deutscher Name", en: "Here is it in english" }
-
@Pittini
Versuche es mal so:var rooms = getEnums('rooms'); for (var i in rooms){ // loop ueber alle Raeume var room = rooms[i].name; if(typeof room == 'object') room = room.de; log("Raum " + room + " gefunden."); };
-
@paul53
So klappt das, vielen Dank. -
@thewhobox
Das wirft leider nen compile error. -
@Pittini sagte:
Das wirft leider nen compile error.
Es fehlt eine schließende Klammer.
Bei der neunen Version des JS-Adapters (4.1.14) ist JSON.stringify() nicht erforderlich. -
@paul53
Mit der Klammer haste recht, hätt ich ja auch selber mal nachzählen können.
Wenn Du mir jetzt noch erklären könntest wie ich nun alle Member eines Raums rauskrieg, haste mich für heute glücklich gemacht :). -
@Pittini sagte:
alle Member eines Raums
var rooms = getEnums('rooms'); for (var i in rooms){ // loop ueber alle Raeume var room = rooms[i].name; if(typeof room == 'object') room = room.de; var members = rooms[i].members; for(let j in members) { log(room + ': ' + members[j]); } };