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 auslesen (gelöst)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    445

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

Array auslesen (gelöst)

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 3 Kommentatoren 451 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.
  • B Offline
    B Offline
    Balu1973
    schrieb am zuletzt editiert von Balu1973
    #1

    Hallo Zusammen,

    ich habe eine Frage zum Auslesen von arrays.

    Hier mein Testscript:

    var test;
    for ( var a = 0 ; a < 3 ; a++ ) {
        test=[];
            for (var b = 0 ; b < 3 ; b++ ) {
                test[a]=[];
                test[a][b] = "Testtext";
                log("a="+a+" - b="+b+" - Inhalt="+test[a][b]);
                log("festgelegt:"+test[0][0]);
            }
    }
    

    Ich versuche ein zweidimensionales Array auszulesen. Der Einfachheit halber schreibe ich überall den gleichen Inhalt "Testtext" in das array.

    Wenn ich es aufführe kommt folgendes im log:

    2:47:59.454	info	javascript.3 (14748) Stop script script.js.8-Testing.Skript_1
    12:47:59.462	info	javascript.3 (14748) Start javascript script.js.8-Testing.Skript_1
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=0 - Inhalt=Testtext
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:Testtext
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=1 - Inhalt=Testtext
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=2 - Inhalt=Testtext
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined
    12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=1 - b=0 - Inhalt=Testtext
    12:47:59.470	info	javascript.3 (14748) script.js.8-Testing.Skript_1: registered 0 subscriptions and 1 schedule
    12:47:59.470	error	javascript.3 (14748) script.js.8-Testing.Skript_1: TypeError: Cannot read property '0' of undefined
    12:47:59.470	error	javascript.3 (14748) at script.js.8-Testing.Skript_1:8:38
    12:47:59.470	error	javascript.3 (14748) at script.js.8-Testing.Skript_1:13:3
    

    Solange die Variablen a und b als Index bei der Ausgabe benutzt (Script Zeile 7) wird funktioniert auch alles wie erwartet.
    Meine Erwartung ist eigentlich, dass ich bei der Ausgabe des festgelegten Zeigers [0][0] auf das Array (Script Zeile 8 ) jedes mal "Testtext" ausgegeben wird. Das funktioniert aber nur, wenn in den Schleifen a und b auch tatsächlich 0 sind. Sobald a oder b nicht mehr 0 sind ist der Inhalt des festgelegten Wertes "undefined" (Log Zeilen 6 und 8).

    Wo habe ich denn hier den Denkfehler?

    Danke und Grüße,
    Balu

    A AlCalzoneA 2 Antworten Letzte Antwort
    0
    • B Balu1973

      Hallo Zusammen,

      ich habe eine Frage zum Auslesen von arrays.

      Hier mein Testscript:

      var test;
      for ( var a = 0 ; a < 3 ; a++ ) {
          test=[];
              for (var b = 0 ; b < 3 ; b++ ) {
                  test[a]=[];
                  test[a][b] = "Testtext";
                  log("a="+a+" - b="+b+" - Inhalt="+test[a][b]);
                  log("festgelegt:"+test[0][0]);
              }
      }
      

      Ich versuche ein zweidimensionales Array auszulesen. Der Einfachheit halber schreibe ich überall den gleichen Inhalt "Testtext" in das array.

      Wenn ich es aufführe kommt folgendes im log:

      2:47:59.454	info	javascript.3 (14748) Stop script script.js.8-Testing.Skript_1
      12:47:59.462	info	javascript.3 (14748) Start javascript script.js.8-Testing.Skript_1
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=0 - Inhalt=Testtext
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:Testtext
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=1 - Inhalt=Testtext
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=2 - Inhalt=Testtext
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined
      12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=1 - b=0 - Inhalt=Testtext
      12:47:59.470	info	javascript.3 (14748) script.js.8-Testing.Skript_1: registered 0 subscriptions and 1 schedule
      12:47:59.470	error	javascript.3 (14748) script.js.8-Testing.Skript_1: TypeError: Cannot read property '0' of undefined
      12:47:59.470	error	javascript.3 (14748) at script.js.8-Testing.Skript_1:8:38
      12:47:59.470	error	javascript.3 (14748) at script.js.8-Testing.Skript_1:13:3
      

      Solange die Variablen a und b als Index bei der Ausgabe benutzt (Script Zeile 7) wird funktioniert auch alles wie erwartet.
      Meine Erwartung ist eigentlich, dass ich bei der Ausgabe des festgelegten Zeigers [0][0] auf das Array (Script Zeile 8 ) jedes mal "Testtext" ausgegeben wird. Das funktioniert aber nur, wenn in den Schleifen a und b auch tatsächlich 0 sind. Sobald a oder b nicht mehr 0 sind ist der Inhalt des festgelegten Wertes "undefined" (Log Zeilen 6 und 8).

      Wo habe ich denn hier den Denkfehler?

      Danke und Grüße,
      Balu

      A Online
      A Online
      Ahnungsbefreit
      schrieb am zuletzt editiert von
      #2

      @balu1973 Vielleicht habe ich auch einen Denkfehler, aber durch den "Reset" der Variablen test in Zeile 3 und 5 durch setzen auf [] ist der Inhalt doch wirklich undefined, oder?

      Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

      1 Antwort Letzte Antwort
      1
      • B Balu1973

        Hallo Zusammen,

        ich habe eine Frage zum Auslesen von arrays.

        Hier mein Testscript:

        var test;
        for ( var a = 0 ; a < 3 ; a++ ) {
            test=[];
                for (var b = 0 ; b < 3 ; b++ ) {
                    test[a]=[];
                    test[a][b] = "Testtext";
                    log("a="+a+" - b="+b+" - Inhalt="+test[a][b]);
                    log("festgelegt:"+test[0][0]);
                }
        }
        

        Ich versuche ein zweidimensionales Array auszulesen. Der Einfachheit halber schreibe ich überall den gleichen Inhalt "Testtext" in das array.

        Wenn ich es aufführe kommt folgendes im log:

        2:47:59.454	info	javascript.3 (14748) Stop script script.js.8-Testing.Skript_1
        12:47:59.462	info	javascript.3 (14748) Start javascript script.js.8-Testing.Skript_1
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=0 - Inhalt=Testtext
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:Testtext
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=1 - Inhalt=Testtext
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=2 - Inhalt=Testtext
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined
        12:47:59.469	info	javascript.3 (14748) script.js.8-Testing.Skript_1: a=1 - b=0 - Inhalt=Testtext
        12:47:59.470	info	javascript.3 (14748) script.js.8-Testing.Skript_1: registered 0 subscriptions and 1 schedule
        12:47:59.470	error	javascript.3 (14748) script.js.8-Testing.Skript_1: TypeError: Cannot read property '0' of undefined
        12:47:59.470	error	javascript.3 (14748) at script.js.8-Testing.Skript_1:8:38
        12:47:59.470	error	javascript.3 (14748) at script.js.8-Testing.Skript_1:13:3
        

        Solange die Variablen a und b als Index bei der Ausgabe benutzt (Script Zeile 7) wird funktioniert auch alles wie erwartet.
        Meine Erwartung ist eigentlich, dass ich bei der Ausgabe des festgelegten Zeigers [0][0] auf das Array (Script Zeile 8 ) jedes mal "Testtext" ausgegeben wird. Das funktioniert aber nur, wenn in den Schleifen a und b auch tatsächlich 0 sind. Sobald a oder b nicht mehr 0 sind ist der Inhalt des festgelegten Wertes "undefined" (Log Zeilen 6 und 8).

        Wo habe ich denn hier den Denkfehler?

        Danke und Grüße,
        Balu

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

        @balu1973 In Zeile 5 überschreibst du die zweite Dimension des Arrays bei jedem Durchlauf mit einem leeren Array.
        Ebenso überschreibst du in Zeile 3 für jeden Durchlauf das äußere Array mit einem leeren. So wäre es richtig:

        var test = []; // HIER!
        for ( var a = 0 ; a < 3 ; a++ ) {
            test[a]=[]; // HIER!
                for (var b = 0 ; b < 3 ; b++ ) {
                    test[a][b] = "Testtext";
                    log("a="+a+" - b="+b+" - Inhalt="+test[a][b]);
                    log("festgelegt:"+test[0][0]);
                }
        }
        

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

        B 1 Antwort Letzte Antwort
        1
        • AlCalzoneA AlCalzone

          @balu1973 In Zeile 5 überschreibst du die zweite Dimension des Arrays bei jedem Durchlauf mit einem leeren Array.
          Ebenso überschreibst du in Zeile 3 für jeden Durchlauf das äußere Array mit einem leeren. So wäre es richtig:

          var test = []; // HIER!
          for ( var a = 0 ; a < 3 ; a++ ) {
              test[a]=[]; // HIER!
                  for (var b = 0 ; b < 3 ; b++ ) {
                      test[a][b] = "Testtext";
                      log("a="+a+" - b="+b+" - Inhalt="+test[a][b]);
                      log("festgelegt:"+test[0][0]);
                  }
          }
          
          B Offline
          B Offline
          Balu1973
          schrieb am zuletzt editiert von
          #4

          Oh Mann.... Ihr hab natürlich Recht. Da war ich irgendwie vollblind.
          Danke Euch beiden!!!

          Grüße,
          Balu

          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

          704

          Online

          32.6k

          Benutzer

          81.9k

          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