Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Array wert entfernen welcher nicht vorkommt

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    12
    1
    128

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

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

Array wert entfernen welcher nicht vorkommt

Scheduled Pinned Locked Moved JavaScript
29 Posts 8 Posters 1.9k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    drapo
    wrote on last edited by
    #1

    Hallo zusammen

    Ich hab nun das halbe Wochenende an einer Lösung gesucht und ich kriegs nicht hin. Wäre um Eure Unterstützung sehr dankbar.
    Ich habe folgenden Anwendungsfall. Ich habe ein Array welches mit Werten gefüllt ist also z.B.:

    const Array = [a, b, c, d, e, f, g]

    danach vergleiche ich mit einer Variable die Inhalte dieses Array (const Vergleich = ...) Die Variable wird immer neu beschrieben. Sobald ein Eintrag nicht mehr vorhanden ist, soll dieser aus dem array entfernt werden. wie kann ich das umsetzen. Also z.B. ich schaue ob a vorhanden ob b vorhanden usw. aber e wird z.b. nicht mehr abgefragt. wie nehme ich dann genau diesen aus dem array heraus welcher nicht abgefragt wurde?

    Ich hoffe ich hab mich einigermassen verständlich ausgedrückt

    CodierknechtC HomoranH 2 Replies Last reply
    0
    • D drapo

      Hallo zusammen

      Ich hab nun das halbe Wochenende an einer Lösung gesucht und ich kriegs nicht hin. Wäre um Eure Unterstützung sehr dankbar.
      Ich habe folgenden Anwendungsfall. Ich habe ein Array welches mit Werten gefüllt ist also z.B.:

      const Array = [a, b, c, d, e, f, g]

      danach vergleiche ich mit einer Variable die Inhalte dieses Array (const Vergleich = ...) Die Variable wird immer neu beschrieben. Sobald ein Eintrag nicht mehr vorhanden ist, soll dieser aus dem array entfernt werden. wie kann ich das umsetzen. Also z.B. ich schaue ob a vorhanden ob b vorhanden usw. aber e wird z.b. nicht mehr abgefragt. wie nehme ich dann genau diesen aus dem array heraus welcher nicht abgefragt wurde?

      Ich hoffe ich hab mich einigermassen verständlich ausgedrückt

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      wrote on last edited by
      #2

      @drapo
      Du rauschst mit 'ner Schleife durch das Array und kennst an der entsprechenden Position dann auch den aktuellen Index?

      https://www.w3schools.com/jsref/jsref_splice.asp

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      D 1 Reply Last reply
      0
      • CodierknechtC Codierknecht

        @drapo
        Du rauschst mit 'ner Schleife durch das Array und kennst an der entsprechenden Position dann auch den aktuellen Index?

        https://www.w3schools.com/jsref/jsref_splice.asp

        D Offline
        D Offline
        drapo
        wrote on last edited by drapo
        #3

        @codierknecht eben nicht. Ich kenn die einträge also mittels indexof aller noch vorhandenen Buchstaben. Aber genau mein Buchstabe e wird ja nicht mehr verglichen da er gar nicht mehr aufgerufen wird. wie kenn ich denn nun genau den eintrag von dem der nicht aufgerufen wird?
        Irgendwie fehlt mir hier die logik wie ich das angehen soll. weisst du wie ich es meine?

        vielleicht nochmals erläutert

        im array prüfe ich ist a vorhanden ok ist da weiter
        b vorhanden ok ist da weiter
        c vorhanden ok ist da weiter
        d vorhanden ok ist da weiter
        e wird nicht geprüft da es entfernt werden soll. wie krieg ich nun genau diesen eintrag raus?
        f vorhanden ok ist da weiter
        g vorhanden ok ist da weiter und Ende.

        geschildG CodierknechtC 2 Replies Last reply
        0
        • D drapo

          @codierknecht eben nicht. Ich kenn die einträge also mittels indexof aller noch vorhandenen Buchstaben. Aber genau mein Buchstabe e wird ja nicht mehr verglichen da er gar nicht mehr aufgerufen wird. wie kenn ich denn nun genau den eintrag von dem der nicht aufgerufen wird?
          Irgendwie fehlt mir hier die logik wie ich das angehen soll. weisst du wie ich es meine?

          vielleicht nochmals erläutert

          im array prüfe ich ist a vorhanden ok ist da weiter
          b vorhanden ok ist da weiter
          c vorhanden ok ist da weiter
          d vorhanden ok ist da weiter
          e wird nicht geprüft da es entfernt werden soll. wie krieg ich nun genau diesen eintrag raus?
          f vorhanden ok ist da weiter
          g vorhanden ok ist da weiter und Ende.

          geschildG Offline
          geschildG Offline
          geschild
          wrote on last edited by
          #4

          @drapo Was heißt für dich "nicht vorhanden" ? Wert == 0 ? Willst du die array-Größe dynamisch verändern ?

          D 1 Reply Last reply
          0
          • geschildG geschild

            @drapo Was heißt für dich "nicht vorhanden" ? Wert == 0 ? Willst du die array-Größe dynamisch verändern ?

            D Offline
            D Offline
            drapo
            wrote on last edited by
            #5

            @geschild das e ist ja im array enthalten. da ich aber nicht mehr das e abfrage weiss ich nicht wie ich das entfernen soll.

            mickymM HomoranH paul53P 3 Replies Last reply
            0
            • D drapo

              @geschild das e ist ja im array enthalten. da ich aber nicht mehr das e abfrage weiss ich nicht wie ich das entfernen soll.

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              wrote on last edited by
              #6

              @drapo Ich würde auch JSONATA verwenden.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              1 Reply Last reply
              0
              • D drapo

                @geschild das e ist ja im array enthalten. da ich aber nicht mehr das e abfrage weiss ich nicht wie ich das entfernen soll.

                HomoranH Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by
                #7

                @drapo sagte in Array wert entfernen welcher nicht vorkommt:

                @geschild das e ist ja im array enthalten. da ich aber nicht mehr das e abfrage weiss ich nicht wie ich das entfernen soll.

                dann such nach e und nimm es raus

                kein Support per PN! - Fragen im Forum stellen -

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                D 1 Reply Last reply
                0
                • HomoranH Homoran

                  @drapo sagte in Array wert entfernen welcher nicht vorkommt:

                  @geschild das e ist ja im array enthalten. da ich aber nicht mehr das e abfrage weiss ich nicht wie ich das entfernen soll.

                  dann such nach e und nimm es raus

                  D Offline
                  D Offline
                  drapo
                  wrote on last edited by
                  #8

                  @homoran wenn ich wüsste dass ich nach e suche wäre es einfach. das ist ja die herausforderung.

                  mickymM 1 Reply Last reply
                  0
                  • D drapo

                    @codierknecht eben nicht. Ich kenn die einträge also mittels indexof aller noch vorhandenen Buchstaben. Aber genau mein Buchstabe e wird ja nicht mehr verglichen da er gar nicht mehr aufgerufen wird. wie kenn ich denn nun genau den eintrag von dem der nicht aufgerufen wird?
                    Irgendwie fehlt mir hier die logik wie ich das angehen soll. weisst du wie ich es meine?

                    vielleicht nochmals erläutert

                    im array prüfe ich ist a vorhanden ok ist da weiter
                    b vorhanden ok ist da weiter
                    c vorhanden ok ist da weiter
                    d vorhanden ok ist da weiter
                    e wird nicht geprüft da es entfernt werden soll. wie krieg ich nun genau diesen eintrag raus?
                    f vorhanden ok ist da weiter
                    g vorhanden ok ist da weiter und Ende.

                    CodierknechtC Online
                    CodierknechtC Online
                    Codierknecht
                    Developer Most Active
                    wrote on last edited by
                    #9

                    @drapo
                    Ich kann Dir nicht mehr folgen.
                    Vielleicht würde der reale Anwendungsfall eher weiterhelfen als ein abstraktes Beispiel.

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    HomoranH 1 Reply Last reply
                    1
                    • D drapo

                      @homoran wenn ich wüsste dass ich nach e suche wäre es einfach. das ist ja die herausforderung.

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      wrote on last edited by mickym
                      #10

                      @drapo

                      @drapo sagte in Array wert entfernen welcher nicht vorkommt:

                      @homoran wenn ich wüsste dass ich nach e suche wäre es einfach. das ist ja die herausforderung.

                      Na du iterierst einfach über das Array wenn Du kein JSONATA verwenden willst. Das geht auch mit der filter Funktion.

                      Schau Dir das mal an:
                      https://www.w3schools.com/js/js_array_iteration.asp#mark_filter

                      Wenn ein Wert undefined oder nach deinen Kriterien false ist, wird dieser herausgefiltert.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      1 Reply Last reply
                      1
                      • CodierknechtC Codierknecht

                        @drapo
                        Ich kann Dir nicht mehr folgen.
                        Vielleicht würde der reale Anwendungsfall eher weiterhelfen als ein abstraktes Beispiel.

                        HomoranH Do not disturb
                        HomoranH Do not disturb
                        Homoran
                        Global Moderator Administrators
                        wrote on last edited by Homoran
                        #11

                        @codierknecht sagte in Array wert entfernen welcher nicht vorkommt:

                        @drapo
                        Ich kann Dir nicht mehr folgen.
                        Vielleicht würde der reale Anwendungsfall eher weiterhelfen als ein abstraktes Beispiel.

                        ich hab ja keine Ahnung von das Janze.
                        schlimmstenfalls das Array in ein Hilfsarray kopieren, da alles rausnehmen was noch im Array sein darf.
                        Dann bleibt ein Element übrig, das dann aus dem Original Array rausgenommen wird.

                        kein Support per PN! - Fragen im Forum stellen -

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Reply Last reply
                        0
                        • D drapo

                          @geschild das e ist ja im array enthalten. da ich aber nicht mehr das e abfrage weiss ich nicht wie ich das entfernen soll.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by
                          #12

                          @drapo sagte: da ich aber nicht mehr das e abfrage

                          Wie stellst du das fest?

                          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

                          1 Reply Last reply
                          0
                          • D drapo

                            Hallo zusammen

                            Ich hab nun das halbe Wochenende an einer Lösung gesucht und ich kriegs nicht hin. Wäre um Eure Unterstützung sehr dankbar.
                            Ich habe folgenden Anwendungsfall. Ich habe ein Array welches mit Werten gefüllt ist also z.B.:

                            const Array = [a, b, c, d, e, f, g]

                            danach vergleiche ich mit einer Variable die Inhalte dieses Array (const Vergleich = ...) Die Variable wird immer neu beschrieben. Sobald ein Eintrag nicht mehr vorhanden ist, soll dieser aus dem array entfernt werden. wie kann ich das umsetzen. Also z.B. ich schaue ob a vorhanden ob b vorhanden usw. aber e wird z.b. nicht mehr abgefragt. wie nehme ich dann genau diesen aus dem array heraus welcher nicht abgefragt wurde?

                            Ich hoffe ich hab mich einigermassen verständlich ausgedrückt

                            HomoranH Do not disturb
                            HomoranH Do not disturb
                            Homoran
                            Global Moderator Administrators
                            wrote on last edited by
                            #13

                            @paul53

                            das muss sich hier drin verstecken

                            @drapo sagte in Array wert entfernen welcher nicht vorkommt:

                            danach vergleiche ich mit einer Variable die Inhalte dieses Array (const Vergleich = ...) Die Variable wird immer neu beschrieben. Sobald ein Eintrag nicht mehr vorhanden ist,

                            kein Support per PN! - Fragen im Forum stellen -

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            1 Reply Last reply
                            0
                            • mickymM Offline
                              mickymM Offline
                              mickym
                              Most Active
                              wrote on last edited by mickym
                              #14

                              Hier mal ein Code:

                              var a=1,b=3,d=3,c=4;
                              
                              var array = [a,b,c,d];
                              console.log(array);
                              
                              c=undefined;
                              array = [a,b,c,d];
                              
                              array=array.filter((val) => val !=null);
                              console.log(array);
                              

                              1f15f4e6-4390-4d7f-baae-02bfc3f7fd8d-image.png

                              Ausgabe vorher - Ausgabe gefiltert

                              Wie du rausfiltest kannst ja dann in der Funktion selbst reinschreiben.

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              1 Reply Last reply
                              0
                              • mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                wrote on last edited by mickym
                                #15

                                Und am Einfachsten ist JSONATA. Code folgt gleich.

                                var a=1,b=3,d=3,c=4;
                                
                                var origArr = [a,b,c,d];
                                console.log(origArr);
                                
                                c=undefined;
                                var newArr = [a,b,c,d];
                                
                                console.log(newArr.filter((val) => val !=null));
                                console.log( await jsonataExpression(newArr,"$[$ != null]"));
                                

                                Okay in diesem Fall ist die Codeeinsparung minimal.

                                statt

                                newArr.filter((val) => val !=null)
                                
                                $[$ != null]
                                

                                b3ab211c-cee2-41c7-97d2-84c05b7f2355-image.png

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                D 1 Reply Last reply
                                0
                                • mickymM mickym

                                  Und am Einfachsten ist JSONATA. Code folgt gleich.

                                  var a=1,b=3,d=3,c=4;
                                  
                                  var origArr = [a,b,c,d];
                                  console.log(origArr);
                                  
                                  c=undefined;
                                  var newArr = [a,b,c,d];
                                  
                                  console.log(newArr.filter((val) => val !=null));
                                  console.log( await jsonataExpression(newArr,"$[$ != null]"));
                                  

                                  Okay in diesem Fall ist die Codeeinsparung minimal.

                                  statt

                                  newArr.filter((val) => val !=null)
                                  
                                  $[$ != null]
                                  

                                  b3ab211c-cee2-41c7-97d2-84c05b7f2355-image.png

                                  D Offline
                                  D Offline
                                  drapo
                                  wrote on last edited by
                                  #16

                                  @mickym hm muss ich mal testen ob das so funktioniert. Du hast ja c=undefined gesetzt.
                                  in meinem beispiel wäre ja c immer noch mit dem wert 4 gefüllt. es wird einfach nicht mehr abgefragt.

                                  das heisst in deinem fall:

                                  a = 1 ist im array vorhanden weiter
                                  b = 3 ist im array vorhanden weiter
                                  c = 4 wird nicht mehr abgefragt und soll deshalb entfernt werden
                                  d = 3 ist im array vorhanden weiter oder in diesem fall fertig

                                  mickymM 1 Reply Last reply
                                  0
                                  • D drapo

                                    @mickym hm muss ich mal testen ob das so funktioniert. Du hast ja c=undefined gesetzt.
                                    in meinem beispiel wäre ja c immer noch mit dem wert 4 gefüllt. es wird einfach nicht mehr abgefragt.

                                    das heisst in deinem fall:

                                    a = 1 ist im array vorhanden weiter
                                    b = 3 ist im array vorhanden weiter
                                    c = 4 wird nicht mehr abgefragt und soll deshalb entfernt werden
                                    d = 3 ist im array vorhanden weiter oder in diesem fall fertig

                                    mickymM Offline
                                    mickymM Offline
                                    mickym
                                    Most Active
                                    wrote on last edited by mickym
                                    #17

                                    @drapo na dann musst du halt über einen Timer setzen, dass c undefined ist, outdated oder was weiß ich ist.

                                    Das ist halt Aufwand- auch wenn es niemand hören will,aber mit NodeRed und einer trigger Node funktioniert das out of the box. So musst du das halt selbst programmieren.

                                    Du musst halt bei deiner timeout function Tabellen führen, damit du dem jeweiligen Arrayelement ein topic oder eine Quelle zuweist, so dass du in deiner time-out function das richtige Element auf undefined setzt.
                                    Gefüttert wird diese Funktion von einem subscription trigger, der halt alle Quellen abfragt.
                                    Das macht die trigger Node halt automatisch.

                                    Aber da stehen dir hier ja viele JS Codierer bei. Mir ist das im Moment Zuviel Codeschreiberei. Statt Tabellen, könntest auch ein Array mit Objekten erstellen- dann würde sich JSONATA lohnen und viel codeschreiberei ersparen und du müsstest keine Tabellen führen

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    D 1 Reply Last reply
                                    0
                                    • mickymM mickym

                                      @drapo na dann musst du halt über einen Timer setzen, dass c undefined ist, outdated oder was weiß ich ist.

                                      Das ist halt Aufwand- auch wenn es niemand hören will,aber mit NodeRed und einer trigger Node funktioniert das out of the box. So musst du das halt selbst programmieren.

                                      Du musst halt bei deiner timeout function Tabellen führen, damit du dem jeweiligen Arrayelement ein topic oder eine Quelle zuweist, so dass du in deiner time-out function das richtige Element auf undefined setzt.
                                      Gefüttert wird diese Funktion von einem subscription trigger, der halt alle Quellen abfragt.
                                      Das macht die trigger Node halt automatisch.

                                      Aber da stehen dir hier ja viele JS Codierer bei. Mir ist das im Moment Zuviel Codeschreiberei. Statt Tabellen, könntest auch ein Array mit Objekten erstellen- dann würde sich JSONATA lohnen und viel codeschreiberei ersparen und du müsstest keine Tabellen führen

                                      D Offline
                                      D Offline
                                      drapo
                                      wrote on last edited by
                                      #18

                                      @mickym ich hab mir nochmals gedanken gemacht. könnte das ein ansatz sein?

                                      let Arraylength.length;
                                      const newArray = [];
                                      
                                      for (let i=0; i<=Arraylength; i++) {
                                      
                                      	if (Array.includes(Vergleich)) {
                                       		newArray.push(Vergleich);
                                      	}
                                      }
                                      
                                      Array.splice(0, Array.length);
                                      
                                      for (let t=0; t<=(Arraylength-1); t++) {
                                      
                                      	Array.push(newArray[t]);
                                      	}
                                      
                                      
                                      

                                      Somit schreibe ich die Werte die ich in meinem Array finde in ein neues Array. Durch die Abfrage mit includes sollten nur noch die Werte im newArray sein welche auch abgefragt wurden.

                                      Danach setze ich das alte Array zurück und befülle es mit den neuen Werten.

                                      Hab ich einen Denkfehler oder würde das so gehen?

                                      mickymM CodierknechtC 2 Replies Last reply
                                      0
                                      • D drapo

                                        @mickym ich hab mir nochmals gedanken gemacht. könnte das ein ansatz sein?

                                        let Arraylength.length;
                                        const newArray = [];
                                        
                                        for (let i=0; i<=Arraylength; i++) {
                                        
                                        	if (Array.includes(Vergleich)) {
                                         		newArray.push(Vergleich);
                                        	}
                                        }
                                        
                                        Array.splice(0, Array.length);
                                        
                                        for (let t=0; t<=(Arraylength-1); t++) {
                                        
                                        	Array.push(newArray[t]);
                                        	}
                                        
                                        
                                        

                                        Somit schreibe ich die Werte die ich in meinem Array finde in ein neues Array. Durch die Abfrage mit includes sollten nur noch die Werte im newArray sein welche auch abgefragt wurden.

                                        Danach setze ich das alte Array zurück und befülle es mit den neuen Werten.

                                        Hab ich einen Denkfehler oder würde das so gehen?

                                        mickymM Offline
                                        mickymM Offline
                                        mickym
                                        Most Active
                                        wrote on last edited by mickym
                                        #19

                                        @drapo Das Problem ist doch in meinen Augen nicht das Array - sondern dass Du doch nicht weißt welches Element veraltet oder nicht mehr abgefragt wurde. Mit Deiner Schleife verkürzt Du doch Dein Array nur um das letzte Element.

                                        Das geht auch mit der pop Methode - da brauchst keine Schleife für: https://www.w3schools.com/js/js_array_methods.asp

                                        Wie gesagt das Problem ist, wie findest Du raus, welches Element veraltet ist - Die Array Behandlung ist eine andere Sache.

                                        Du könntest höchstens meinen ursprünglichen Code nehmen und in der validierungsfunktion den Zeitstempel der letzten Aktualisierung nehmen und diesen mit der aktuellen Zeit verleichen.

                                        a,b,c,d sind dann Objekte (states mit dem Zeitstempel)

                                        //var a=1,b=3,d=3,c=4;
                                        
                                         
                                        //var array = [a,b,c,d];
                                        
                                        // Erstelle ein Array mit den Objekten und Werten, der auszuwertenden States.
                                        console.log(array);
                                         
                                        // c=undefined;
                                        // array = [a,b,c,d];
                                         
                                        array=array.filter((val) => {
                                        //Vergleich aktuelle Zeit mit Zeitstempel des Objektes, wenn Differenz größer als dann 
                                        // return false
                                        // sonst return true
                                        });
                                        console.log(array);
                                        
                                        

                                        Das vergleichen der Zeitstempel mit dem aktuellen Zeitpunkt überlasse ich aber hier gerne @paul53 oder @Codierknecht

                                        Wenn dann die veralteten Objekte ausgefiltert sind - empfehle ich entweder die map Funktion
                                        https://www.w3schools.com/js/js_array_iteration.asp#mark_map,
                                        die erstellt Dir auch ein neues Array mit nur den Werten oder Du nutzt wieder das geniale JSONATA. Muss leider weg - schau später oder von unterwegs nur rein, aber ohne Code. ;)

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        D 1 Reply Last reply
                                        1
                                        • D drapo

                                          @mickym ich hab mir nochmals gedanken gemacht. könnte das ein ansatz sein?

                                          let Arraylength.length;
                                          const newArray = [];
                                          
                                          for (let i=0; i<=Arraylength; i++) {
                                          
                                          	if (Array.includes(Vergleich)) {
                                           		newArray.push(Vergleich);
                                          	}
                                          }
                                          
                                          Array.splice(0, Array.length);
                                          
                                          for (let t=0; t<=(Arraylength-1); t++) {
                                          
                                          	Array.push(newArray[t]);
                                          	}
                                          
                                          
                                          

                                          Somit schreibe ich die Werte die ich in meinem Array finde in ein neues Array. Durch die Abfrage mit includes sollten nur noch die Werte im newArray sein welche auch abgefragt wurden.

                                          Danach setze ich das alte Array zurück und befülle es mit den neuen Werten.

                                          Hab ich einen Denkfehler oder würde das so gehen?

                                          CodierknechtC Online
                                          CodierknechtC Online
                                          Codierknecht
                                          Developer Most Active
                                          wrote on last edited by
                                          #20

                                          @drapo
                                          Klingt alles immer noch ein bisschen nach "von hinten durch die Brust ins Auge".

                                          Wie gesagt: Wenn Du mal zeigen würdest, was da der tatsächliche Anwendungsfall ist, wäre Hilfe sicher zielführender.

                                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                          HmIP|ZigBee|Tasmota|Unifi
                                          Zabbix Certified Specialist
                                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                          D 2 Replies Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          574

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe