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. Array erzeugen mit JSON-Objekten

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Array erzeugen mit JSON-Objekten

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
4 Beiträge 2 Kommentatoren 412 Aufrufe 2 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.
  • M Online
    M Online
    MCU
    schrieb am zuletzt editiert von
    #1

    Ich möchte ein Array mit JSON-Objekten erzeugen.
    Als Beispiel:

    let arr = [];
    
    for (let i=0; i<10;i++){
        let jsonObj ={};
        jsonObj.id = i;
        jsonObj.name = "Test";
        for (let j=0;j<5;j++){
            jsonObj.state = '';
            jsonObj.state = 'Statenummer '+ String(j);
            arr.push(jsonObj);
        }
    }
    log(arr);
    
    
    

    Jetzt sollte im Array aber eigentlich

    [{'id':0,'name':'Test','state':'Statenummer 0'},{'id':0,'name':'Test','state':'Statenummer 1'}, usw erscheinen
    

    Es kommt aber: ??

    [{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'}]
    

    Was mache ich da falsch?
    Vielen Dank.

    NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
    Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • M MCU

      Ich möchte ein Array mit JSON-Objekten erzeugen.
      Als Beispiel:

      let arr = [];
      
      for (let i=0; i<10;i++){
          let jsonObj ={};
          jsonObj.id = i;
          jsonObj.name = "Test";
          for (let j=0;j<5;j++){
              jsonObj.state = '';
              jsonObj.state = 'Statenummer '+ String(j);
              arr.push(jsonObj);
          }
      }
      log(arr);
      
      
      

      Jetzt sollte im Array aber eigentlich

      [{'id':0,'name':'Test','state':'Statenummer 0'},{'id':0,'name':'Test','state':'Statenummer 1'}, usw erscheinen
      

      Es kommt aber: ??

      [{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':0,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':1,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':2,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':3,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':4,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':5,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':6,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':7,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':8,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'},{'id':9,'name':'Test','state':'Statenummer 4'}]
      

      Was mache ich da falsch?
      Vielen Dank.

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @mcu Du definierst in der äußeren Schleife das Objekt und verwendest es in der inneren Schleife mehrfach wieder. Du fügst also 5 Referenzen auf das gleiche Objekt in das Array, bevor du ein neues erstellst. So geht's:

      let arr = [];
      
      for (let i = 0; i < 10; i++) {
        const id = i;
        const name = "Test";
      
        for (let j = 0; j < 5; j++) {
          const state = "Statenummer " + String(j);
          arr.push({ id, name, state });
        }
      }
      
      log(arr);
      

      In Zeile 9 wird jedes Mal ein neues Objekt erstellt und ins Array eingefügt.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      M 1 Antwort Letzte Antwort
      1
      • AlCalzoneA AlCalzone

        @mcu Du definierst in der äußeren Schleife das Objekt und verwendest es in der inneren Schleife mehrfach wieder. Du fügst also 5 Referenzen auf das gleiche Objekt in das Array, bevor du ein neues erstellst. So geht's:

        let arr = [];
        
        for (let i = 0; i < 10; i++) {
          const id = i;
          const name = "Test";
        
          for (let j = 0; j < 5; j++) {
            const state = "Statenummer " + String(j);
            arr.push({ id, name, state });
          }
        }
        
        log(arr);
        

        In Zeile 9 wird jedes Mal ein neues Objekt erstellt und ins Array eingefügt.

        M Online
        M Online
        MCU
        schrieb am zuletzt editiert von MCU
        #3

        @alcalzone Ich muß nochmal nachfragen:
        Wie kann ich dann den const-Wert in einer Abfrage bestimmen?

        
        if (devicesArr[key2].attributes == undefined){
              const deviceattributes = '';
         }else{
              const deviceattributes = devicesArr[key2].attributes; 
         }
        

        Wenn ich das so mache, wird der const-Wert unter in der anderen Schleife nicht erkannt?

        Er muss schon oben defniert werden:

        const deviceattributes = devicesArr[key2].attributes;
        if (devicesArr[key2].attributes == undefined){
              const deviceattributes = ''; /* wird nicht erkannt */
         }else{
              const deviceattributes = devicesArr[key2].attributes; 
         }
        
        
        

        Wie kann ich den const aktualisieren?

        Habs schon gefunden. Danke.
        Stelle den const hinter die Abfrage.

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • M MCU

          @alcalzone Ich muß nochmal nachfragen:
          Wie kann ich dann den const-Wert in einer Abfrage bestimmen?

          
          if (devicesArr[key2].attributes == undefined){
                const deviceattributes = '';
           }else{
                const deviceattributes = devicesArr[key2].attributes; 
           }
          

          Wenn ich das so mache, wird der const-Wert unter in der anderen Schleife nicht erkannt?

          Er muss schon oben defniert werden:

          const deviceattributes = devicesArr[key2].attributes;
          if (devicesArr[key2].attributes == undefined){
                const deviceattributes = ''; /* wird nicht erkannt */
           }else{
                const deviceattributes = devicesArr[key2].attributes; 
           }
          
          
          

          Wie kann ich den const aktualisieren?

          Habs schon gefunden. Danke.
          Stelle den const hinter die Abfrage.

          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von AlCalzone
          #4

          @mcu const und let gelten immer nur innerhalb des Blocks in dem sie deklariert sind. Ich empfehle die Lektüre von https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/let und verwandten Tutorials.

          In deinem 1. Beispiel je getrennt im if und else und beim 2. zusätzlich noch eine weitere außerhalb, die aber von den "lokalen" Definitionen überdeckt wird. Das was du vorhats geht entweder per let:

          let deviceattributes;
          
          if (devicesArr[key2].attributes == undefined) {
            deviceattributes = "";
          } else {
            deviceattributes = devicesArr[key2].attributes;
          }
          

          oder etwas pragmatischer mit Fallback-Wert:

          const deviceattributes = devicesArr[key2].attributes || "";
          

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          1
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          472

          Online

          32.5k

          Benutzer

          81.7k

          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