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. Frage zu Array Konstante

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

Frage zu Array Konstante

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 2 Kommentatoren 369 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.
  • P Online
    P Online
    pk68
    schrieb am zuletzt editiert von pk68
    #1

    Hi Leute,
    ich bräuchte mal ein bißchen Nachhilfe in Sachen Arrays. Die sind ja in JS kein "normaler" Datentyp, sondern eine Art spezielles Objekt?
    Ich bin gerade dabei ein Skript für eine RGB-Lampe zu bauen. Da das Modul 'color-convert' verwendet wird, deren Funktionen Arrays zurückgeben, sollen die drei Grundfarben in ein Array gepackt werden. Für die Farbe Weiß wurde eine Array-Konstante erstellt. Lieder blieb diese nicht konstant, sondern nahm den Wert einer Array-Variablen an.

    Hier mal ein kleines Beispiel:

    const RGB_C = [200, 200, 200];
    let RGB_V = RGB_C;
    log('RGB_C = ' + String(RGB_C));
    log('RGB_V = ' + String(RGB_V));
    
    RGB_V = [100, 100, 100];
    log('Test 1 ------------------');
    log('RGB_C = ' + String(RGB_C));
    log('RGB_V = ' + String(RGB_V));
    
    let Green = RGB_V[1];
    Green -= 50;
    RGB_V[1] = Green;
    log('Test 2 ------------------');
    log('RGB_C = ' + String(RGB_C));
    log('RGB_V = ' + String(RGB_V));
    

    Dazu das Log:

    2020-09-15 22:19:15.292 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
    2020-09-15 22:19:15.292 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,200,200
    2020-09-15 22:19:15.293 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 1 ------------------
    2020-09-15 22:19:15.293 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
    2020-09-15 22:19:15.293 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 100,100,100
    2020-09-15 22:19:15.294 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 2 ------------------
    2020-09-15 22:19:15.294 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
    2020-09-15 22:19:15.295 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 100,50,100
    

    Soweit alles gut. Nun wird Zeile 6 herauskommentiert:

    const RGB_C = [200, 200, 200];
    let RGB_V = RGB_C;
    log('RGB_C = ' + String(RGB_C));
    log('RGB_V = ' + String(RGB_V));
    
    //RGB_V = [100, 100, 100];
    log('Test 1 ------------------');
    log('RGB_C = ' + String(RGB_C));
    log('RGB_V = ' + String(RGB_V));
    
    let Green = RGB_V[1];
    Green -= 50;
    RGB_V[1] = Green;
    log('Test 2 ------------------');
    log('RGB_C = ' + String(RGB_C));
    log('RGB_V = ' + String(RGB_V));
    

    Und das Log:

    2020-09-15 22:21:11.188 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
    2020-09-15 22:21:11.189 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,200,200
    2020-09-15 22:21:11.189 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 1 ------------------
    2020-09-15 22:21:11.190 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
    2020-09-15 22:21:11.190 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,200,200
    2020-09-15 22:21:11.190 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 2 ------------------
    2020-09-15 22:21:11.191 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,150,200
    2020-09-15 22:21:11.191 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,150,200
    

    Kann mir mal jemand erklären, warum die Konstante RGB_C nach Test 2 sich geändert hat und den gleichen Wert wie die Variable RGB_V hat?
    Warum passiert dies nicht, wenn Zeile 6 nicht auskommentiert ist?
    Was passiert eigentlich in Zeile 2? Wird da ein Wert übergeben oder eine Referenz?

    paul53P 1 Antwort Letzte Antwort
    0
    • P pk68

      Hi Leute,
      ich bräuchte mal ein bißchen Nachhilfe in Sachen Arrays. Die sind ja in JS kein "normaler" Datentyp, sondern eine Art spezielles Objekt?
      Ich bin gerade dabei ein Skript für eine RGB-Lampe zu bauen. Da das Modul 'color-convert' verwendet wird, deren Funktionen Arrays zurückgeben, sollen die drei Grundfarben in ein Array gepackt werden. Für die Farbe Weiß wurde eine Array-Konstante erstellt. Lieder blieb diese nicht konstant, sondern nahm den Wert einer Array-Variablen an.

      Hier mal ein kleines Beispiel:

      const RGB_C = [200, 200, 200];
      let RGB_V = RGB_C;
      log('RGB_C = ' + String(RGB_C));
      log('RGB_V = ' + String(RGB_V));
      
      RGB_V = [100, 100, 100];
      log('Test 1 ------------------');
      log('RGB_C = ' + String(RGB_C));
      log('RGB_V = ' + String(RGB_V));
      
      let Green = RGB_V[1];
      Green -= 50;
      RGB_V[1] = Green;
      log('Test 2 ------------------');
      log('RGB_C = ' + String(RGB_C));
      log('RGB_V = ' + String(RGB_V));
      

      Dazu das Log:

      2020-09-15 22:19:15.292 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
      2020-09-15 22:19:15.292 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,200,200
      2020-09-15 22:19:15.293 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 1 ------------------
      2020-09-15 22:19:15.293 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
      2020-09-15 22:19:15.293 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 100,100,100
      2020-09-15 22:19:15.294 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 2 ------------------
      2020-09-15 22:19:15.294 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
      2020-09-15 22:19:15.295 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 100,50,100
      

      Soweit alles gut. Nun wird Zeile 6 herauskommentiert:

      const RGB_C = [200, 200, 200];
      let RGB_V = RGB_C;
      log('RGB_C = ' + String(RGB_C));
      log('RGB_V = ' + String(RGB_V));
      
      //RGB_V = [100, 100, 100];
      log('Test 1 ------------------');
      log('RGB_C = ' + String(RGB_C));
      log('RGB_V = ' + String(RGB_V));
      
      let Green = RGB_V[1];
      Green -= 50;
      RGB_V[1] = Green;
      log('Test 2 ------------------');
      log('RGB_C = ' + String(RGB_C));
      log('RGB_V = ' + String(RGB_V));
      

      Und das Log:

      2020-09-15 22:21:11.188 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
      2020-09-15 22:21:11.189 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,200,200
      2020-09-15 22:21:11.189 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 1 ------------------
      2020-09-15 22:21:11.190 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,200,200
      2020-09-15 22:21:11.190 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,200,200
      2020-09-15 22:21:11.190 - info: javascript.0 (19213) script.js.Test.#Test_JS: Test 2 ------------------
      2020-09-15 22:21:11.191 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_C = 200,150,200
      2020-09-15 22:21:11.191 - info: javascript.0 (19213) script.js.Test.#Test_JS: RGB_V = 200,150,200
      

      Kann mir mal jemand erklären, warum die Konstante RGB_C nach Test 2 sich geändert hat und den gleichen Wert wie die Variable RGB_V hat?
      Warum passiert dies nicht, wenn Zeile 6 nicht auskommentiert ist?
      Was passiert eigentlich in Zeile 2? Wird da ein Wert übergeben oder eine Referenz?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @pk68 sagte:

      Was passiert eigentlich in Zeile 2? Wird da ein Wert übergeben oder eine Referenz?

      Es wird eine Referenz übergeben. Zeile 6 ersetzt die Referenz durch eine neue.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      P 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @pk68 sagte:

        Was passiert eigentlich in Zeile 2? Wird da ein Wert übergeben oder eine Referenz?

        Es wird eine Referenz übergeben. Zeile 6 ersetzt die Referenz durch eine neue.

        P Online
        P Online
        pk68
        schrieb am zuletzt editiert von
        #3

        @paul53 sagte in Frage zu Array Konstante:

        Es wird eine Referenz übergeben. Zeile 6 ersetzt die Referenz durch eine neue.

        Danke. Das erklärt natürlich die Merkwürdigkeiten.
        Wie müsste man den richtigerweise eine Wertübergabe zwischen Arrays machen? In einer For-Schleife jeden Wert einzeln?

        paul53P 1 Antwort Letzte Antwort
        0
        • P pk68

          @paul53 sagte in Frage zu Array Konstante:

          Es wird eine Referenz übergeben. Zeile 6 ersetzt die Referenz durch eine neue.

          Danke. Das erklärt natürlich die Merkwürdigkeiten.
          Wie müsste man den richtigerweise eine Wertübergabe zwischen Arrays machen? In einer For-Schleife jeden Wert einzeln?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @pk68 sagte:

          In einer For-Schleife jeden Wert einzeln?

          Ja, oder mit .slice().

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          P 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @pk68 sagte:

            In einer For-Schleife jeden Wert einzeln?

            Ja, oder mit .slice().

            P Online
            P Online
            pk68
            schrieb am zuletzt editiert von
            #5

            @paul53 sagte in Frage zu Array Konstante:

            Ja, oder mit .slice().

            Habe gerade slice in das Beispiel eingebaut und schon läuft es. Besten Dank.

            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

            877

            Online

            32.4k

            Benutzer

            81.5k

            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