NEWS
[gelöst] Ersetzen eines json Array elements
-
@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); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden