Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Ersetzen eines json Array elements

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    895

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Ersetzen eines json Array elements

Geplant Angeheftet Gesperrt Verschoben JavaScript
22 Beiträge 4 Kommentatoren 939 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Ben1983B Ben1983

    @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?

    T Nicht stören
    T Nicht stören
    ticaki
    schrieb am zuletzt editiert von ticaki
    #21

    @ben1983

    Ich finde array für die Ausgabe am passenden.

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    Ben1983B 1 Antwort Letzte Antwort
    1
    • T ticaki

      @ben1983

      Ich finde array für die Ausgabe am passenden.

      Ben1983B Offline
      Ben1983B Offline
      Ben1983
      schrieb am zuletzt editiert von Ben1983
      #22

      @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);
      });
      
      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      374

      Online

      32.6k

      Benutzer

      82.1k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe