NEWS
[gelöst] Ersetzen eines json Array elements
JavaScript
22
Beiträge
4
Kommentatoren
939
Aufrufe
1
Watching
-
@ticaki die Frage ist ja… Array ist so ok? Intern (im Skript) mi Objekten ist etwas komfortabler.
Dann mit Object.values zum Array machen… weil nachher im State ist doch sicher einer Arraystruktur besser, als Objekte… die immer gleich sind, oder?Ich finde array für die Ausgabe am passenden.
-
@ticaki OK, da bin ich ja beruhigt.
Hier mein Komplettes Skript zum Zuweisen:
// Id Deklaration der States (für spätere Abrufe) const idOffeneTueren = "0_userdata.0.Produktiv.Tueren.Innen.offeneTueren"; const idGeschlosseneTueren = "0_userdata.0.Produktiv.Tueren.Innen.geschlosseneTueren"; const idTueren = "0_userdata.0.Produktiv.Tueren.Innen.tueren"; // Türobjekte definieren let tueren = {}; let offeneTueren = {}; let geschlosseneTueren = {}; //Arrays bei Skriptstart anlegen $(`state(${enumtypeFunctions}=${enumTuerInnen})`).each((id)=>{ //objekt und state holen let obj = getObject(id); let state = getState(id); // Objekte zuweisen assignObject(obj,state); // Arrays beschreiben setState(idTueren,JSON.stringify(Object.values(tueren)),true); setState(idOffeneTueren,JSON.stringify(Object.values(offeneTueren)),true); setState(idGeschlosseneTueren,JSON.stringify(Object.values(geschlosseneTueren)),true); }); // Objekte zuweisen function assignObject(obj,state){ // Zuweisen des allgemeinen Türobjekts tueren[obj._id] = {name:obj.common.name, zustand: state.val?"geschlossen": "offen"}; // Zuweisen des Objekts für die offenen oder geschlossenen Türen if(state.val){ geschlosseneTueren[obj._id] = tueren[obj._id]; delete offeneTueren[obj._id]; } else { offeneTueren[obj._id] = tueren[obj._id]; delete geschlosseneTueren[obj._id]; } } /********************************************************************************************************* * *********************************** Ab hier bei Änderungen ******************************************** ******************************************************************************************************* */ // Abfrage, ob sich ein Türzustand geändert hat $(`state(${enumtypeFunctions}=${enumTuerInnen})`).on((dp)=>{ // Objekt holen und zuweisen let obj = getObject(dp.id); assignObject(obj,dp.state); // Arrays beschreiben setState(idTueren,JSON.stringify(Object.values(tueren)),true); setState(idOffeneTueren,JSON.stringify(Object.values(offeneTueren)),true); setState(idGeschlosseneTueren,JSON.stringify(Object.values(geschlosseneTueren)),true); });