796 Stimmen

Wie wandelt man in JavaScript am besten eine Zahl in eine Zeichenkette um?

Was ist der "beste" Weg, um eine Zahl in eine Zeichenkette zu konvertieren (in Bezug auf die Geschwindigkeit Vorteil, Klarheit Vorteil, Speicher Vorteil, etc) ?

Einige Beispiele:

  1. String(n)

  2. n.toString()

  3. ""+n

  4. n+""

10voto

DarckBlezzer Punkte 4050

Ich werde dies mit mehr Daten überarbeiten, wenn ich Zeit dazu habe, aber im Moment ist das in Ordnung...

Test in nodejs v8.11.2: 2018/06/06

let i=0;
    console.time("test1")
    for(;i<10000000;i=i+1){
        const string = "" + 1234;
    }
    console.timeEnd("test1")

    i=0;
    console.time("test1.1")
    for(;i<10000000;i=i+1){
        const string = '' + 1234;
    }
    console.timeEnd("test1.1")

    i=0;
    console.time("test1.2")
    for(;i<10000000;i=i+1){
        const string = `` + 1234;
    }
    console.timeEnd("test1.2")

    i=0;
    console.time("test1.3")
    for(;i<10000000;i=i+1){
        const string = 1234 +  '';
    }
    console.timeEnd("test1.3")

    i=0;
    console.time("test2")
    for(;i<10000000;i=i+1){
        const string = (1234).toString();
    }
    console.timeEnd("test2")

    i=0;
    console.time("test3")
    for(;i<10000000;i=i+1){
        const string = String(1234);
    }
    console.timeEnd("test3")

    i=0;
    console.time("test4")
    for(;i<10000000;i=i+1){
        const string = `${1234}`;
    }
    console.timeEnd("test4")

    i=0;
    console.time("test5")
    for(;i<10000000;i=i+1){
        const string = 1234..toString();
    }
    console.timeEnd("test5")

    i=0;
    console.time("test6")
    for(;i<10000000;i=i+1){
        const string = 1234 .toString();
    }
    console.timeEnd("test6")

Ausgabe

test1: 72.268ms
test1.1: 61.086ms
test1.2: 66.854ms
test1.3: 63.698ms
test2: 207.912ms
test3: 81.987ms
test4: 59.752ms
test5: 213.136ms
test6: 204.869ms

9voto

Tim Punkte 1624

Wenn Sie Folgendes benötigen Format das Ergebnis auf eine bestimmte Anzahl der Dezimalstellen, um zum Beispiel eine Währung darzustellen, braucht man so etwas wie die toFixed() Methode.

number.toFixed( [digits] )

digits ist die Anzahl der Ziffern, die nach der Dezimalstelle angezeigt werden sollen.

4voto

Alexander Shostak Punkte 577

Die einzige gültige Lösung für fast alle mögliche bestehende und zukünftige Fälle (Eingabe ist Zahl, Null, undefiniert, Symbol, irgendetwas anderes) ist String(x) . Verwenden Sie nicht 3 Wege für einfache Operationen, die auf Annahmen über den Werttyp beruhen, wie z.B. "hier konvertiere ich definitiv eine Zahl in einen String und hier definitiv einen Booleschen Wert in einen String".

Erläuterung:

String(x) behandelt Nullen, Undefinierte, Symbole, [alles] und ruft .toString() für Objekte.

'' + x ruft auf. .valueOf() auf x (casting to number), throws on Symbols, kann implementierungsabhängige Ergebnisse liefern.

x.toString() wird bei Nullen und Undefinierten ausgelöst.

Anmerkung: String(x) schlägt immer noch bei prototyplosen Objekten wie Object.create(null) .

Wenn Sie Zeichenketten wie 'Hello, undefined' nicht mögen oder prototyplose Objekte unterstützen wollen, verwenden Sie die folgende Typkonvertierungsfunktion:

/**
 * Safely casts any value to string. Null and undefined are converted to ''.
 * @param  {*} value
 * @return {string}
 */
function string (str) {
  return value == null ? '' : (typeof value === 'object' && !value.toString ? '[object]' : String(value));
}

4voto

Mohit Dabas Punkte 2283

Bei Zahlenliteralen muss der Punkt für den Zugriff auf eine Eigenschaft vom Dezimalpunkt unterschieden werden. Damit haben Sie die folgenden Möglichkeiten, wenn Sie String() auf das Zahlenliteral 123 aufrufen wollen:

123..toString()
123 .toString() // space before the dot 123.0.toString()
(123).toString()

2voto

Serghei Punkte 3886

Ich denke, es hängt von der Situation ab, aber in jedem Fall können Sie die .toString() Methode, da sie sehr leicht zu verstehen ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X