JavaScript Langer String in Floats

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
649
Hey,

ich habe folgenden String:

Javascript:
string = "393.3,123.4,4920.5,3.34,5"

Diese würde ich nun gerne so nutzen wie:

Javascript:
inhalt = [393.3,123.4,4920.5,3.34,5]

Also vom Prinzip nur die " weg.

Mit parseFloat kriege ich nur den ersten Wert zurück.
An der Tatsache, dass die Zahlen als String kommen, kann ich leider nichts ändern.

Jemand eine Idee?

lg
 
Hast du noch eine Idee, außer "parseFloat" auf den ganzen String aufzurufen?
 
  • Gefällt mir
Reaktionen: blöderidiot
Du hast eigentlich ein Array als String und willst daraus wieder ein Array machen.
Versuchs also mal mit split vorher

Und hoffe dass keiner deine Floats mit ',' als Trennzeichen schreibt :D
 
  • Gefällt mir
Reaktionen: Fombu, BeBur und kartoffelpü
Wieviele Floats hast Du im String? Wenn parseFloat nur 1 Float pro String zurueck gibt brauchst Du halt mehr als einen String fuer den Input. Einen Trenner hast Du bereits drin, sollte also kein Problem sein die Haeppchen fuer ParseFloat mundgerecht vorzubereiten.
 
Ich bin jetzt mal ganz evil und werfe eval() :evillol:

P.S. bitte nicht nutzen, wenn man nicht weiß was man tut :)


Ähnlich effektiv und einfach sollte es mit JSON.parse() gehen.
 
Zuletzt bearbeitet:
Hm, also irgendwie kriege ich damit nix hin.
Das einzige was wirklich hilft ist parseFloat jedoch kriege ich damit nur den ersten Wert.
 
Den String vorher aufteilen am komma.
Oder willst du jetzt so oft das selbe Schreiben bis dir jemand die fertige Lösung präsentiert?
 
Hi,

var str = "How are you doing today?";
var res = str.split(" ");

in deinem Fall als Delimiter eben das "Komma" und nicht " " rein, dann solltest du doch ein wunderbares Array bekommen. Und dann kannst du einfach durch das Array iterieren und die einzelnen Werte nach Lust und Laune casten und in ein neues Array packen.

VG,
Mad
 
Code:
string = "393.3,123.4,4920.5,3.34,5"
newstring = string.split(",");

parseFloat(newstring)

klappt nicht
 
Mit den drei Funktionen hast du es in einer Zeile: split() -> map() -> parseFloat()
Code:
string.split(",").map( f => parseFloat(f));
 
hemorieder schrieb:
Hey,

ich habe folgenden String:

Javascript:
string = "393.3,123.4,4920.5,3.34,5"

Diese würde ich nun gerne so nutzen wie:

Javascript:
inhalt = [393.3,123.4,4920.5,3.34,5]

Also vom Prinzip nur die " weg.

Mit parseFloat kriege ich nur den ersten Wert zurück.
An der Tatsache, dass die Zahlen als String kommen, kann ich leider nichts ändern.

Jemand eine Idee?

lg
wie schon geschrieben wurde mit split:
Code:
    const original_string = "393.3,123.4,4920.5,3.34,5"
    let result = original_string.split(",").map((num) => {
        return parseFloat(num)
    })
   
    // Result: [393.3, 123.4, 4920.5, 3.34, 5]
 
Zuletzt bearbeitet: (ups, da war jemand schneller)
Wenn jetzt schon Lösungen verteilt werden ...

Code:
const string = "393.3,123.4,4920.5,3.34,5";
const floats = JSON.parse(`[${string}]`);
 
  • Gefällt mir
Reaktionen: Tornhoof, netzgestaltung, KitKat::new() und eine weitere Person
Quick & Dirty bei 1.000.000 Iterationen: map = 578ms und json = 691ms
Wenn ich den Inputstring 5x so lang mache landen wir bei: map = 1841ms und json = 1946ms
Bei 20x: map = 6579 und json = 6423ms

Vereinzelt wird das im Code keinen großen unterschied machen, hätte eher ein Problem mit JSON beim Error abfangen.
Wenn der Input nicht 100%ig JSON entspricht bekommst du bei der ganzen Funktion nichts raus.
Wenn map z.B. sowas 393.3,NaN,4920.5,3.34,5 bekommt wird einfach der zweite Wert ungültig sein und alle anderen Werte werden ausgegeben (auch in der richtigen Reihenfolge).

Kommt eher aufs Aufgabengebiet und die Länge an, soll der Code mit falschem Input komplett auf die Nase fallen oder "parse was du kannst und weiter gehts".
 
  • Gefällt mir
Reaktionen: Tornhoof, netzgestaltung, DerGoblin2k und 2 andere
Hi,

hemorieder schrieb:
wenn ich wüsste wie

man könnte sich natürlich auch die Grundlagen einfach mal anlernen, damit man auch weiß was man da überhaupt genau macht und sich dann die Empfehlungen hier durchlesen, aber das wäre sicherlich zu viel verlangt. Richtig?

VG,
Mad
 
  • Gefällt mir
Reaktionen: pcBauer, kim88 und Joshinator
Zurück
Oben