ebody: jQuery - data Attribut nicht als String oder ohne Anführungszeichen als Element einem Array zufügen

Hallo,

ich selektiere HTML Elemente mit einer bestimmten Klasse und speicher deren Wert aus einem data Attribut.

let arr = [];

$('.asin').each(function(index,number) {

 let getAsin = $(this).data('api-asin');
 // let getAsin = $(this).data('api-asin').replace('"','');
 arr[index] = getAsin;

});

Wenn ich das Array danach ausgebe console.log('arr: ', arr); steht jeder Wert in dem Array in "". Wie bekomme ich die Werte ohne "" in das Array? Oder wie kann ich sie im Array ersetzen?

Gruß ebody

  1. n'Abend,

    let arr = [];
    
    $('.asin').each(function(index,number) {
    
     let getAsin = $(this).data('api-asin');
     // let getAsin = $(this).data('api-asin').replace('"','');
     arr[index] = getAsin;
    
    });
    

    Wenn ich das Array danach ausgebe console.log('arr: ', arr); steht jeder Wert in dem Array in "". Wie bekomme ich die Werte ohne "" in das Array? Oder wie kann ich sie im Array ersetzen?

    kann es sein, dass du Gespenster jagst?
    Es ist völlig normal, dass console.log() Strings in komplexen Datentypen (Array, Object) in Anführungszeichen ausgibt, damit man sie auch als Strings erkennt. Da gibt's nichts wegzumachen oder zu ersetzen.

    Live long and pros healthy,
     Martin

    --
    Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
    1. Danke für den Hinweis. Gebe ich den Typ des Variablen Wertes aus, steht dort aber auch String. Wie bekomme ich diesen Wert ohne "" oder nicht als String in das Array? Die Werte bestehen aus Zahlen und Buchstaben.

       
       console.log('typeof getAsin: ', typeof(getAsin));
      
      

      Gruß ebody

      1. Hallo,

        Danke für den Hinweis. Gebe ich den Typ des Variablen Wertes aus, steht dort aber auch String. Wie bekomme ich diesen Wert ohne "" oder nicht als String in das Array? Die Werte bestehen aus Zahlen und Buchstaben.

        nochmal in anderen Worten: Die Anführungszeichen gibt console.log() aus, um String-Werte kenntlich zu machen. Die sind nicht Bestandteil des Variablenwerts.

        Live long and pros healthy,
         Martin

        --
        Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
      2. Hallo ebody,

        vielleicht hilft dieses Beispiel. Ich verwende als Stringbegrenzer vorsätzlich nicht das Zeichen ", sondern ' - was ja ebenfalls zulässig ist.

        let a = [ 'Hallo', '"Welt"'];
        console.log(a);
        console.log(a[0].length);
        console.log(a[1].length);
        

        Ausgaben sind:

        ["Hallo", ""Welt""]
        5
        7
        

        Beachte, dass Hallo mit " begrenzt ausgegeben wird, obwohl ich es mit ' als Begrenzer gespeichert habe. Stringbegrenzer sind Schall, Rauch, austauschbar und nicht Teil des Strings. Das zeigt auch die Längenausgabe.

        Wenn wir Dich jetzt alle mistverstanden haben und das bei Dir anders ist, dann zeig uns mal einen Screenshot des DOM an der Stelle, wo deine asininen Werte stehen.

        Wie bekomme ich diesen Wert ohne "" oder nicht als String in das Array? Die Werte bestehen aus Zahlen und Buchstaben.

        Das musst Du näher erklären. Wenn die Werte aus Zahlen und Buchstaben bestehen, dann musst Du sie als String im Array ablegen. Einen Wert mit Buchstaben drin kannst Du nicht als Zahl speichern. Und wenn Du jetzt nochmal irgendein console.log Statement hinschreibst, ohne dazuzuschreiben (oder einen Screenshot hinzuzufügen), was exakt ausgegeben wird, dann krieg ich einen Schreikrampf…

        Rolf

        --
        sumpsi - posui - obstruxi
        1. @@Rolf B

          Wenn die Werte aus Zahlen und Buchstaben bestehen, dann musst Du sie als String im Array ablegen. Einen Wert mit Buchstaben drin kannst Du nicht als Zahl speichern.

          0x3e8? 3e8?

          Beides Zahlen: 1000 und 300000000. 😜

          😷 LLAP

          --
          “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
        2. @@Rolf B

          let a = [ 'Hallo', '"Welt"'];
          console.log(a);
          console.log(a[0].length);
          console.log(a[1].length);
          

          Ausgaben sind:

          ["Hallo", ""Welt""]
          5
          7
          

          Du willst uns ein halbes XII für ein VII vormachen? 🤣


          Welcher Browser gibt ["Hallo", ""Welt""] aus? Ah, die Wanze von Google. Und die Wanze von Microsoft.

          Firefox und Safari zeigen ["Hallo", "\"Welt\""] an.

          Die Console von CodePen macht ["Hallo", "'Welt'"] draus. WTF?

          😷 LLAP

          --
          “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
        3. Hallo,

          let a = [ 'Hallo', '"Welt"'];
          console.log(a);
          console.log(a[0].length);
          console.log(a[1].length);
          

          Ausgaben sind:

          ["Hallo", ""Welt""]
          5
          7
          

          irgendjemand kann nicht richtig zählen - dein Browser oder du. ;-)

          Wenn wir Dich jetzt alle mistverstanden haben und das bei Dir anders ist, dann zeig uns mal einen Screenshot des DOM an der Stelle, wo deine asininen Werte stehen.

          Eselige Werte?? Was'n das für ein Ausdruck?

          Und wenn Du jetzt nochmal irgendein console.log Statement hinschreibst, ohne dazuzuschreiben (oder einen Screenshot hinzuzufügen), was exakt ausgegeben wird, dann krieg ich einen Schreikrampf…

          Just relax ...

          Live long and pros healthy,
           Martin

          --
          Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
          1. @@Der Martin

            irgendjemand kann nicht richtig zählen - dein Browser oder du. ;-)

            Off-by-one error, muss am Browser liegen.

            wo deine asininen Werte stehen.

            Eselige Werte??

            TIL: Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JSPHP, …)

            😷 LLAP

            --
            “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
            1. Hallo Gunnar,

              wo deine asininen Werte stehen.

              Eselige Werte??

              TIL: Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JSPHP, …)

              da musste ich aber gerade meine Phantadu[1] ganz schön anstrengen, um den Bogen vom Kamel zum Esel zu kriegen. 😀

              Btw, wurde am Javascript-Teil der Forensoftware in den letzten zwei Tagen was geändert, @Christian Kruse? Ich dachte gestern schon, hey, irgendwas ist auf einmal anders. Jetzt ist es mir bewusst aufgefallen:

              Bisher stand der Cursor immer irgendwo in der zweiten oder dritten Zeile des zitierten Textes, wenn man auf ein Posting geantwortet hat, jetzt plötzlich ganz am Ende des vorhandenen Textes.
              Ist beides nicht so prickelnd, finde ich; besser wäre ganz am Anfang. Aber die vorherige Version (in der Nähe des Anfangs) gefiel mir da immer noch besser.

              Live long and pros healthy,
               Martin

              --
              Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.

              1. Wir kennen uns schon so lange, dass wir uns duzen. ↩︎

              1. Hallo Der Martin,

                Bisher stand der Cursor immer irgendwo in der zweiten oder dritten Zeile des zitierten Textes, wenn man auf ein Posting geantwortet hat, jetzt plötzlich ganz am Ende des vorhandenen Textes.
                Ist beides nicht so prickelnd, finde ich; besser wäre ganz am Anfang.

                Bei mir ist das so.

                Screenshot Antwortposting mit Cursor

                Bis demnächst
                Matthias

                --
                Du kannst das Projekt SELFHTML unterstützen,
                indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
                1. Hallo Matthias,

                  Bisher stand der Cursor immer irgendwo in der zweiten oder dritten Zeile des zitierten Textes, wenn man auf ein Posting geantwortet hat, jetzt plötzlich ganz am Ende des vorhandenen Textes.
                  Ist beides nicht so prickelnd, finde ich; besser wäre ganz am Anfang.

                  Bei mir ist das so.

                  Screenshot Antwortposting mit Cursor

                  genau, so ähnlich war das bei mir bis vor zwei, drei Tagen auch. Mit dem Unterschied, dass ich keine automatische Grußfloskel drin habe; bei mir beginnt der Text im Antwortfeld daher mit der Begrüßung vom Vorposter, der Cursor steht zwei Zeilen tiefer. Leider kann ich's jetzt nicht mehr nachstellen, um einen Screenshot zu machen, aber so etwa hätte es ausgesehen, mit dem Cursor am Anfang der Zeile mit dem "Oder anders gesagt":

                  
                  > Hallo Gunnar,
                  > 
                  > > Oder anders gesagt: **arcsin** zu **asin** abzukürzen ist eselig.
                  > > 
                  > > Ebenso **event** zu **ev** abzukürzen.
                  
                  

                  Jetzt steht der Cursor ganz am Ende des Textfeldes, wenn ich auf ein Posting antworte.

                  Kann natürlich auch sein, dass da bei mir irgendwas Lokales reinspielt - ich wüsste aber nicht, was. Ich habe wissentlich nichts geändert.

                  Live long and pros healthy,
                   Martin

                  --
                  Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
              2. @@Der Martin

                wo deine asininen Werte stehen.

                Eselige Werte??

                TIL: Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JSPHP, …)

                da musste ich aber gerade meine Phantadu[^1] ganz schön anstrengen, um den Bogen vom Kamel zum Esel zu kriegen. 😀

                Ja, „Bogen“ trifft’s ganz gut.

                😷 LLAP

                --
                “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
              3. Hallo Martin,

                Bisher stand der Cursor immer irgendwo in der zweiten oder dritten Zeile des zitierten Textes, wenn man auf ein Posting geantwortet hat, jetzt plötzlich ganz am Ende des vorhandenen Textes.

                Ist beides nicht so prickelnd, finde ich; besser wäre ganz am Anfang. Aber die vorherige Version (in der Nähe des Anfangs) gefiel mir da immer noch besser.

                Nein, am JS hat sich diesbezüglich nichts geändert. Meine Vermutung ist eher, dass du was an deinen Einstellungen geändert hast und das JS jetzt nicht mehr in das indexOf("\n\n") == -1 gelaufen ist.

                Ich habe das jetzt angepasst, der Cursor ist jetzt in jedem Fall vor dem ersten Zitat:

                        const found = value.indexOf("\n\n");
                        const cite = value.search(/^>/);
                        let pos = found === -1 ? 0 : found + 2;
                
                        if (cite !== -1 && found > cite) {
                          pos = cite;
                        }
                

                Freundliche Grüße,
                Christian Kruse

                1. Hallo Christian,

                  Bisher stand der Cursor immer irgendwo in der zweiten oder dritten Zeile des zitierten Textes, wenn man auf ein Posting geantwortet hat, jetzt plötzlich ganz am Ende des vorhandenen Textes.

                  Ist beides nicht so prickelnd, finde ich; besser wäre ganz am Anfang. Aber die vorherige Version (in der Nähe des Anfangs) gefiel mir da immer noch besser.

                  Nein, am JS hat sich diesbezüglich nichts geändert. Meine Vermutung ist eher, dass du was an deinen Einstellungen geändert hast und das JS jetzt nicht mehr in das indexOf("\n\n") == -1 gelaufen ist.

                  wie ich schon schrieb: Ich will eine lokale Ursache nicht ausschließen, bin mir aber keiner Schuld bewusst. Weder Foren- noch Browsereinstellung.

                  Ich habe das jetzt angepasst, der Cursor ist jetzt in jedem Fall vor dem ersten Zitat:

                          const found = value.indexOf("\n\n");
                          const cite = value.search(/^>/);
                          let pos = found === -1 ? 0 : found + 2;
                  
                          if (cite !== -1 && found > cite) {
                            pos = cite;
                          }
                  

                  Super, so hatte ich mir das schon immer gewünscht. 😀

                  Live long and pros healthy,
                   Martin

                  --
                  Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
            2. Hallo Gunnar,

              Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JS, PHP, …)

              Du verwirrst mich. Das ist im Moment relativ leicht, da ich ja erwiesenermaßen beim Zählen von vier Buchstaben schon durcheinander komme.

              Suche ich im Wilden Weiten Netz nach Nisa, finde ich die Koransure 4, al Nisa, "Die Frauen". Frauen sind Kamele? Gewagt, gewagt...

              Google Translate meint auch, dass Nisa maltesisch wäre und "Frauen" heißt, wobei es "Frau" mit "mara" übersetzt. Sehr wirr.

              Ansonsten finde ich einen Piaggio Sattel "Nisa Camel" oder einen Nisa Lippenstift Schlüsselanhänger im Kamel - wobei da wohl die Automatikübersetzung im Koma war oder Amok lief, denn "Camel" sollte wohl die Farbe sein.

              Wenn Du aber nur den Sinusschwung der Kamelhöcker meintest... na gut.

              Rolf

              --
              sumpsi - posui - obstruxi
              1. @@Rolf B

                Wenn Du aber nur den Sinusschwung der Kamelhöcker meintest... na gut.

                Genau das. Der Martin hatte den Bogen raus.

                😷 LLAP

                --
                “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
            3. @@Gunnar Bittersmann

              irgendjemand kann nicht richtig zählen - dein Browser oder du. ;-)

              Off-by-one error, muss am Browser liegen.

              wo deine asininen Werte stehen.

              Eselige Werte??

              TIL: Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JSPHP, …)

              Oder anders gesagt: arcsin zu asin abzukürzen ist eselig.

              Ebenso event zu ev abzukürzen.

              😷 LLAP

              --
              “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
              1. Hallo Gunnar,

                Oder anders gesagt: arcsin zu asin abzukürzen ist eselig.

                Ebenso event zu ev abzukürzen.

                genau, e reicht doch, wenn schon, denn schon. (duckundweg)

                Gruß
                Jürgen

                PS Kann sich noch jemand an den Apple II Basic-Interpreter erinnern? Der berücksichtigte bei Variablennamen nur die ersten beiden Buchstaben.

                1. Hallo Jürgen,

                  genau, e reicht doch

                  ❤️

                  😉 Rolf

                  --
                  sumpsi - posui - obstruxi
                2. Hallo Jürgen,

                  PS Kann sich noch jemand an den Apple II Basic-Interpreter erinnern? Der berücksichtigte bei Variablennamen nur die ersten beiden Buchstaben.

                  beim Commodore VC20/C64 ebenso. Da wurden auch tatsächlich nur die ersten zwei Buchstaben (oder ein Buchstabe und eine Ziffer) gespeichert.

                  Live long and pros healthy,
                   Martin

                  --
                  Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
                  1. Hallo Martin,

                    da war der Apple fieser, der hat lange Namen zwar gespeichert, aber alles ab dem 3. Zeichen ignoriert.

                    Gruß
                    Jürgen

                  2. Hi there,

                    PS Kann sich noch jemand an den Apple II Basic-Interpreter erinnern? Der berücksichtigte bei Variablennamen nur die ersten beiden Buchstaben.

                    beim Commodore VC20/C64 ebenso. Da wurden auch tatsächlich nur die ersten zwei Buchstaben (oder ein Buchstabe und eine Ziffer) gespeichert.

                    Nachdem ich das zum ersten Mal höre (und auch auf Richtigkeit überprüft habe) versteh' ich nach fast 40 Jahren, warum einige meiner VC20-Basic-Programme nicht um die Burg richtig funktionieren wollten (ich dachte immer, die ersten 8 Zeichen wären signifikant, so wie bei dBase oder Clipper (arghhh!)). Jetzt bin ich fast erleichtert, waren's keine Logikfehler sondern quasi Bedienungsfehler...😉

                    Wobei - "gespeichert" hat er den Mist ja schon, sonst wären die Variablennamen beim Listing ja verkürzt ausgegeben worden, daß man soviel Speicher sparen kann, wenn man dem Interpreter alles was länger ist als zwei Zeichen wegnimmt, ist für micht jetzt auch nicht sofort ersichtlich, aber vielleicht hängts ja mit den Adressierungsarten des 6502 zusammen...

                    1. Hallo,

                      Nachdem ich das zum ersten Mal höre (und auch auf Richtigkeit überprüft habe) versteh' ich nach fast 40 Jahren, warum einige meiner VC20-Basic-Programme nicht um die Burg richtig funktionieren wollten

                      Und ich verstehe jetzt, warum beim GFA-Basic immer so stolz betont wurde, dass Variablennamen nicht nur beliebig lang sein dürfen, sondern auch auf voller Länge unterschieden werden...

                      Gruß
                      Kalk

                    2. Hallo,

                      [beim Commodore VC20/C64] wurden auch tatsächlich nur die ersten zwei Buchstaben (oder ein Buchstabe und eine Ziffer) gespeichert.

                      Nachdem ich das zum ersten Mal höre (und auch auf Richtigkeit überprüft habe) versteh' ich nach fast 40 Jahren, warum einige meiner VC20-Basic-Programme nicht um die Burg richtig funktionieren wollten (ich dachte immer, die ersten 8 Zeichen wären signifikant, so wie bei dBase oder Clipper (arghhh!)). Jetzt bin ich fast erleichtert, waren's keine Logikfehler sondern quasi Bedienungsfehler...😉

                      siehste, ist doch die Welt wieder in Ordnung. 😀

                      Wobei - "gespeichert" hat er den Mist ja schon, sonst wären die Variablennamen beim Listing ja verkürzt ausgegeben worden

                      Naja, im Quelltext blieben "lange" Namen schon ungekürzt drin. Aber wenn während des Programmablaufs die Variablen im Arbeitsspeicher (heute würde man sagen "auf dem Heap") angelegt wurden, dann gab's dort nur noch zwei Zeichen für den Namen.

                      daß man soviel Speicher sparen kann, wenn man dem Interpreter alles was länger ist als zwei Zeichen wegnimmt, ist für micht jetzt auch nicht sofort ersichtlich, aber vielleicht hängts ja mit den Adressierungsarten des 6502 zusammen...

                      Das glaube ich nicht. Nein, ich denke, es ging wirklich nur ums Sparen von Speicherplatz. Immerhin, bei 3.5kB (VC20) oder 38kB (C64) für Programm und Variablentabelle ist jedes Byte kostbar.

                      Live long and pros healthy,
                       Martin

                      --
                      Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.
        4. Hallo Rolf B,

          let a = [ 'Hallo', '"Welt"'];
          console.log(a);
          console.log(a[0].length);
          console.log(a[1].length);
          

          Ausgaben sind:

          ["Hallo", ""Welt""]
          5
          7
          

          Screenshot console

          (FF 82)

          screenshot console

          (Edge 87)

          Bis demnächst
          Matthias

          --
          Du kannst das Projekt SELFHTML unterstützen,
          indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
        5. Hi,

          let a = [ 'Hallo', '"Welt"'];
          console.log(a);
          console.log(a[0].length);
          console.log(a[1].length);
          

          Ausgaben sind:

          ["Hallo", ""Welt""]
          5
          7
          

          Beim Eindeutschen des "Hello World"-Beispiels nicht aufgepaßt? 😉

          cu,
          Andreas a/k/a MudGuard

          1. Hallo MudGuard,

            ich wusste doch dass mit der automatischen Übersetzung was nicht stimmt!

            Rolf

            --
            sumpsi - posui - obstruxi