Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Array mit Namen als Index

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Array mit Namen als Index

    This topic has been deleted. Only users with topic management privileges can see it.
    • SKB
      SKB Developer Most Active last edited by

      Ich habe da mal eine generelle Frage:

      Normal werden Arrays ja mit nummerischen Indizes erstellt. Heute hatte ich mal den namentlichen Index ausprobiert - was soll ich sagen?
      Es würde funktionieren.

      Ist nur die Frage, ob das so gedacht ist? 😄

      BananaJoe OliverIO 2 Replies Last reply Reply Quote 0
      • BananaJoe
        BananaJoe Most Active @SKB last edited by

        @skb Sicher das du damit nicht einfach ein Objekt erstellt hast?
        https://www.mediaevent.de/javascript/array-assoziativ.html

        Aber ja, es in JavaScript verfügbar 🙂 Also kannst du es nutzen.

        1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @SKB last edited by OliverIO

          @skb

          technisch gesehen ist es dann kein array mehr, sondern ein objekt mit properties.

          du kannst die Anzahl der Einträge dann nicht mehr über length abfragen, sondern musst dir erst die Namen der properties als Array holen und dann zählen

          Object.keys(abc).length
          
          1 Reply Last reply Reply Quote 0
          • SKB
            SKB Developer Most Active last edited by

            Danke für Eure Antworten.

            Also, ich nutze es wie folgt:

            let test = new Array();
            test['dieses'] = 'das';
            

            Ist das nun ein Object oder ein Array oder ganz was Anderes? 😄

            OliverIO AlCalzone 2 Replies Last reply Reply Quote 0
            • OliverIO
              OliverIO @SKB last edited by OliverIO

              @skb
              Aufgrund der Inheritance ist ein Array auch ein Objekt.
              Sobald du aber ein Array wie ein Objekt behandelst ist es nur noch ein Objekt

              Das ist auf der einen Seite ein Vorteil von JavaScript
              Aber auch ein Nachteil weil es keine strenge Typisierung unterstützt

              Aus diesem Grund wurde typescript als Aufsatz auf JavaScript erfunden um die streng Typisierung auch nach JavaScript zu bringen.
              Ich glaube (ich kenn mich mit typescript nicht ganz so gut aus) in typescript würde das zu einem Fehler führen, da du ein Array wie ein Objekt behandelst.

              Wenn du nicht tiefer in die Sprachen eintauchen willst dann nimm es so das es funktioniert. Wenn du dich für mehr interessierst dann wirst du ein paar Techniken (schweinereien) kennenlernen, die man zwar nicht machen sollte aber trotzdem in JavaScript funktionieren.
              Ein Beispiel: auch eine Funktion ist ein Objekt. Und da kann ich separat Daten abspeichern. Möglich ist es, aber machen sollte man es nicht, weil nicht zukunftskompatibel

              SKB 1 Reply Last reply Reply Quote 0
              • SKB
                SKB Developer Most Active @OliverIO last edited by

                @oliverio Prima, danke für die Erklärung - leuchtet ein.

                Ich wollte einmal versuchen, einen Adapter zu bauen und dort hätte der Benutzer mehrere (oder auch wenige) Werte zum angeben.
                Damit diese dann im Verlauf bearbeitet werden, dachte ich an die Namen, da so meine Indizes "gleich" bleiben.

                Oder hättest Du hier einen anderen Vorschlag?

                Danke!

                OliverIO 1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @SKB last edited by

                  @skb

                  Hängt auch davon ab wie du die Liste der Werte nachher anzeigen lassen möchtest. Wenn du keinen numerischen Index mehr hast kann sich die Liste auch nicht mehr die Reihenfolge der Werte merken. Auch weiß ich gerade nicht, wie JavaScript mit Sonderzeichen als property Namen umgeht.
                  Um flexibel und erweiterungsfähig zu sein bietet sich meist ein Array of objects an. Im jeweiligen Objekt kannst du dir dann den Namen, den Wert und ggfs. weitere Informationen zum Wert speichern.
                  Für jeden Wert gibt es ein eigenes Objekt im Array

                  1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer @SKB last edited by AlCalzone

                    @skb sagte in Array mit Namen als Index:

                    Also, ich nutze es wie folgt:

                    let test = new Array();
                    test['dieses'] = 'das';
                    

                    Ist das nun ein Object oder ein Array oder ganz was Anderes? 😄

                    Sauber wäre:

                    let test = {}; // ein leeres Objekt
                    test["dieses"] = "das";
                    

                    oder direkt:

                    let test = {
                      dieses: "das"
                    };
                    
                    1 Reply Last reply Reply Quote 0
                    • SKB
                      SKB Developer Most Active last edited by

                      Prima, danke für die Hinweise.

                      Ich wüsste jetzt noch gerne, wenn ich einen Adapter erstelle, wie der automatisch übersetzt wird, dann eine "Verknüpfung" zum ioBroker Repository findet und dann aufgenommen wird.

                      Könnte mir dies jemand noch mitteilen?

                      Vielen Dank!

                      AlCalzone 1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer @SKB last edited by

                        @skb sagte in Array mit Namen als Index:

                        dann eine "Verknüpfung" zum ioBroker Repository findet

                        https://github.com/ioBroker/ioBroker.repositories/ lesen 🙂

                        wie der automatisch übersetzt wird

                        https://github.com/ioBroker/adapter-dev/#manage-translations lesen

                        SKB 1 Reply Last reply Reply Quote 1
                        • SKB
                          SKB Developer Most Active @AlCalzone last edited by

                          @alcalzone Supi. Danke 🙂

                          Ben1983 2 Replies Last reply Reply Quote 0
                          • Ben1983
                            Ben1983 @SKB last edited by

                            @skb Eigentlich hat Du nun ein Object mit array:

                            Siehe hier:

                            let arr = new Array();
                            
                            // create Property
                            arr["myProperty"] = 25;
                            
                            // Create array elements
                            arr.push("A");
                            arr.push("B");
                            for(const key in arr){
                                log(`key: ${key}, value: ${arr[key]}`);
                            }
                            

                            liefert folgenden log:

                            key: 0, value: A
                            key: 1, value: B
                            key: myProperty, value: 25
                            
                            1 Reply Last reply Reply Quote 0
                            • Ben1983
                              Ben1983 @SKB last edited by

                              @skb Aber wie @AlCalzone schon geschrieben hat.
                              Wenn Du nur Namen verwenden möchtest, also properties, dann wäre am Saubersten:

                              let test = {}; // ein leeres Objekt
                              test["dieses"] = "das";
                              

                              Das hat den elegenten Charme, dass man auch so Einträge abfragen kann und nicht ein Array durchsuchen muss:

                              if(test["dies"]){
                                  ....dein code
                              }
                              
                              SKB 1 Reply Last reply Reply Quote 0
                              • SKB
                                SKB Developer Most Active @Ben1983 last edited by

                                @ben1983 genau das war der Gedanke dahinter.

                                Ich wollte settings abspeichern und die alle mit index anlegen fand ich doof.

                                Daher die Frage nach den Namen.

                                Danke 🙂

                                OliverIO 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @SKB last edited by

                                  @skb

                                  Und dann gibts es noc den Dateityp Map
                                  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

                                  SKB 1 Reply Last reply Reply Quote 2
                                  • SKB
                                    SKB Developer Most Active @OliverIO last edited by

                                    @oliverio Danke, aber das Map mag' ich nicht so 🙂

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    744
                                    Online

                                    31.7k
                                    Users

                                    79.8k
                                    Topics

                                    1.3m
                                    Posts

                                    5
                                    16
                                    626
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo