jQuery - data Attribut nicht als String oder ohne Anführungszeichen als Element einem Array zufügen
ebody
- array
- jquery
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
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
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
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
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
@@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
@@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
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
@@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. (JS, PHP, …)
😷 LLAP
Hallo Gunnar,
wo deine asininen Werte stehen.
Eselige Werte??
TIL: Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JS, PHP, …)
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
Wir kennen uns schon so lange, dass wir uns duzen. ↩︎
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.
Bis demnächst
Matthias
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.
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
@@Der Martin
wo deine asininen Werte stehen.
Eselige Werte??
TIL: Die Umkehrfunktion vom Kamel 🐫 ist ein Esel. (JS, PHP, …)
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
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
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
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
@@Rolf B
Wenn Du aber nur den Sinusschwung der Kamelhöcker meintest... na gut.
Genau das. Der Martin hatte den Bogen raus.
😷 LLAP
@@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. (JS, PHP, …)
Oder anders gesagt: arcsin zu asin abzukürzen ist eselig.
Ebenso event zu ev abzukürzen.
😷 LLAP
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.
Hallo Jürgen,
genau, e reicht doch
❤️
😉 Rolf
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
Hallo Martin,
da war der Apple fieser, der hat lange Namen zwar gespeichert, aber alles ab dem 3. Zeichen ignoriert.
Gruß
Jürgen
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...
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
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
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
(FF 82)
(Edge 87)
Bis demnächst
Matthias
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
Hallo MudGuard,
ich wusste doch dass mit der automatischen Übersetzung was nicht stimmt!
Rolf