Hallo,
wenn man mit Arrays arbeitet, werden die einzelnen Objekte im Array ja
bei der Ausgabe häufig mit "" abgetrennt:
1
//die Werte von content sind nicht relevant. Es geht nur darum, dass content 8 Objekte beinhaltet.
2
3
var content = [5, 4, 8, 8, 6, 2, 4, 4]; //<-- Länge = 8
4
5
//test erhält hier so viele Objekte, wie content lang ist
6
var test = [];
7
for (var i in content) {
8
test.push(i);
9
}
10
11
die Ausgabe von test:
12
[ "0", "1", "2", "3", "4", "5", "6", "7" ]
An sich klappt alles. Der Code dient auch eher zum Zeigen.
Doch kann ich es irgendwie verhindern, dass Javascript bei der Ausgabe
bzw. weiteren Nutzung von Arrays, die mit z.B. for-Schleifen entstehen
und somit variabel sind, diese "" vor und nach jedem Objekt setzt?
Wenn ich ein Array erstelle mit festen Werten, also so:
1
var test2 = [0, 1, 2, 3, 4, 5, 6, 7];
und das dann mit console.log ausgebe, ist die Ausgabe gleich, aber ohne
diese Anführungsstriche.
Mein Array verändert sich jedoch immer etwas, weswegen ich es eben mit
einer for-Schleife erstelle.
Gibt es da eine Möglichkeit, dass eben diese "" nicht entstehen? Ich
kann die nämlich nicht weiterverarbeiten. Ein String nimmt das JS-Tool
leider nicht an. und die Anführungszeichen sind ebenfalls ein Problem.
Die gehören ja im Prinzip nicht zum Inhalt den ich übergebe.
Dementsprechend kann ich das Array auch nicht wirklich manipulieren und
die "" ausblenden.
Ich bin leider ziemlich auf Arrays angewiesen und kann wie gesagt nicht
auf einen String ausweichen.
Vielleicht habt ihr ja einen Denkanstoß für mich :)
Ich habe das nur als Beispiel benutzt. Mich interessiert schon der
Inhalt.
Im konkreten Fall habe ich ein Array mit date-Angaben. (Länge ist
Variabel. also einige Daten werden darin gespeichert. Stammend aus einer
Datenbank)
Also
Den Array füge ich mit einem anderen Zusammen. Sodass ich Datum-Wert
Paare bekomme. Es geht also eigentlich nicht um die Länge des Array.
Nur nutze ich eben eine solche for-Schleife wie im Beispiel, da die
Anzahl und der Inhalt der Quellelemente eben variabel ist.
Wenn ich diesen gemeinsamen Array ausgebe, habe ich das Problem mit den
Anführungsstrichen.
Sorry falls ich zu wenig Infos am Anfang gegeben habe... bin etwas
genervt von dem Problem weil es mich so aufhält :/
naja, wenn du Dinge concatenierst, dann ist dein Date-Datentyp weg und
raus kommt ein String, und der wird nunmal durch Quotes eingeschlossen.
Vielleicht willst du stattdessen ein Tuple nehmen?
Du hast es im Prinzip genau erfasst.
Aber das Format des Datums ist garnicht das Problem zum Glück. Also new
Date()).toISOString() müsste ich nach meiner Einschätzung garnicht mehr
anwenden.
Ich mache das aktuell so:
1
for(var i in data) {
2
Abstand.push(data[i].Abstand);
3
Zeit.push(data[i].Zeit);
4
}
--> hier bekomme ich aus einem Array mit mehreren Wertereihen die beiden
Array heraus (das sind 2 von 5 Datenreihen die data beinhaltet).
Du pushst einen String.
[code]
werte.push({'x': Zeit[i], 'y': Abstand[i]});
[code]
Das waere ein echtes dict, so wie es vermutlich auch dein
endverarbeitendes Tool erwartet.
Ich weiß nicht ganz ob ich dich richtig verstehe.
Es stimmt, als String habe ich das auch schon ins richtige Format
bekommen, aber mein Tool akzeptiert leider keinen String.
Es handelt sich um chart.js und das will als Datensatz mit x und y
Werten immer nur einen Array... Allerdings bekomme ich den nicht richtig
formatiert.
Ja du hast im Prinzip recht.
Aber diese data: ... Datensatz habe ich halt als Array und nicht direkt
ins Script geschrieben, weil sich die genauen Daten eben täglich
vermehren.
schreibe ich das so:
funktioniert die Anzeige. Allerdings habe ich die Werte natürlich direkt
hingeschrieben
mache ich das gleiche aber als Array, geht es nicht mehr.
1
data: werte (werte ist der Array den ich vorhin gebildet habe)
Der Werte Array den habe ich oben gebildet. Der ist identisch zu der
manuellen Eingabe oben, allerdings mit den Anführungsstrichen zwischen
den Objekten.
Ich denke da liegt das Problem
Das Date Format funktioniert sonst einwandfrei und er sieht die
date-Werte auch als solche an und ordnet sie zeitlich richtig ein.
FloB schrieb:> Der Werte Array den habe ich oben gebildet. Der ist identisch zu der> manuellen Eingabe oben, allerdings mit den Anführungsstrichen zwischen> den Objekten.> Ich denke da liegt das Problem
Und du bist sicher, dass du meine Aenderungsempfehlung von vorhin auch
wirklich umgesetzt hast?
Webhipster schrieb:>
1
> werte.push({'x': Zeit[i], 'y': Abstand[i]});
2
>
FloB schrieb:> Das Date Format funktioniert sonst einwandfrei und er sieht die> date-Werte auch als solche an und ordnet sie zeitlich richtig ein.
Auch bei ungleich langen Intervallen? Nunja, vielleicht parst die Lib
wirklich alles, was wie ein Timestamp aussieht.
Webhipster schrieb:> Auch bei ungleich langen Intervallen? Nunja, vielleicht parst die Lib> wirklich alles, was wie ein Timestamp aussieht.
Das tatsächlich. Ich hatte das vor ein paar Wochen schon genauer
probiert, aber der macht das perfekt, auch mit unterschiedlichen
Intervallen.
Webhipster schrieb:> werte.push({'x': Zeit[i], 'y': Abstand[i]});
Ich probiere das gerade noch. Ich bekomme zwar keinen Fehler, aber es
wird auch kein Graph angezeigt. Ich weiß noch nicht ganz wieso, probiere
noch aus
Du scheinst ein Verständnisproblem zu haben, was ein String, und was
Objekte und sonstige Datentypen sind. Ein Objekt ist kein String, ein
String ist kein Objekt. Eine Konsole kann dir kein Objekt zeigen, es
muss dieses in eine für Menschen verständliche repräsentation umwandeln.
Das Array Objekt etc. ist nicht wirklich eine Abfolge der Zeichen,
die du da siehst.
Webhipster schrieb:> Und du bist sicher, dass du meine Aenderungsempfehlung von vorhin auch> wirklich umgesetzt hast?> Webhipster schrieb:>>> werte.push({'x': Zeit[i], 'y': Abstand[i]});>>
Ich hatte einen Schreibfehler darin...
Es funktioniert damit!!
Ich danke Dir vielmals! Auch noch um diese Uhrzeit ;)
Oh man..
DPA schrieb:> Du scheinst ein Verständnisproblem zu haben
Ja das ist auch nicht ausgeschlossen. Ich bin in der Welt von Javascript
und PHP etc. noch recht neu und hab da noch nicht alles so richtig
verstanden. Aber ich arbeite daran :/
Ich habe hier aber jetzt verstanden was falsch war, beim ersellen meines
Array. Hoffe ich :P
FloB schrieb:> var content = [5, 4, 8, 8, 6, 2, 4, 4]; //<-- Länge = 8>> //test erhält hier so viele Objekte, wie content lang ist> var test = [];> for (var i in content) {> test.push(i);> }>> die Ausgabe von test:> [ "0", "1", "2", "3", "4", "5", "6", "7" ]>> An sich klappt alles. Der Code dient auch eher zum Zeigen.> Doch kann ich es irgendwie verhindern, dass Javascript bei der Ausgabe> bzw. weiteren Nutzung von Arrays, die mit z.B. for-Schleifen entstehen> und somit variabel sind, diese "" vor und nach jedem Objekt setzt?
Du bist völlig auf dem Holzweg. Dein Fehler fängt viel früher an:
Mit einer "for (var x in y)" iterierst Du über die Keys
(Schlüssel) eines Objektes. Die Keys eines Objektes sind immerStrings (oder Symbole).
Was Du aber vermutlich willst, ist über die Werte des Arrays iterieren.
Also musst Du "for (var x of y) schreiben.
Dann bekommst Du auch an keinen komischen Stellen Strings, wo Du es
nicht erwartest.