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+""

42voto

Mohammad Arif Punkte 6261

...versucht der Parser von JavaScript, die die Punktnotation einer Zahl als Fließkomma-Literal zu analysieren.

2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first

Source :

21voto

cssimsek Punkte 1199

Natürlich mit einem Augenzwinkern:

var harshNum = 108;
"".split.call(harshNum,"").join("");

Oder in ES6 könnten Sie einfach verwenden Vorlagezeichenfolgen :

var harshNum = 108;
`${harshNum}`;

19voto

Erick Punkte 2438

Ich benutzte https://jsperf.com um einen Testfall für die folgenden Fälle zu erstellen:

number + ''
`${number}`
String(number)
number.toString()

https://jsperf.com/number-string-conversion-speed-comparison

Mit Stand vom 24. Juli 2018 besagen die Ergebnisse, dass number + '' ist die schnellste in Chrome, in Firefox ist sie gleichauf mit Template-String-Literalen.

Beide String(number) y number.toString() sind etwa 95 % langsamer als die schnellste Option.

performance tests, description above

12voto

Carson Punkte 3411

Ich empfahl `${expression}` weil Sie sich keine Sorgen über Fehler machen müssen.

[undefined,null,NaN,true,false,"2","",3].forEach(elem=>{
  console.log(`${elem}`, typeof(`${elem}`))
})

/* output
undefined string
null      string
NaN       string
true      string
false     string
2         string
          string
3         string
*/

Unten können Sie die Geschwindigkeit testen, aber die Reihenfolge wird das Ergebnis beeinflussen. (in StackOverflow) können Sie es auf Ihrer Plattform testen.

const testCases = [
  ["${n}", (n) => `${n}`], // 
  ['----', undefined],

  [`"" + n`, (n) => "" + n],
  [`'' + n`, (n) => '' + n],
  [`\`\` + n`, (n) => `` + n],
  [`n + ''`, (n) => n + ''],
  ['----', undefined],

  [`String(n)`, (n) =>  String(n)],
  ["${n}", (n) => `${n}`], // 

  ['----', undefined],
  [`(n).toString()`, (n) => (n).toString()],
  [`n.toString()`, (n) => n.toString()],

]

for (const [name, testFunc] of testCases) {
  if (testFunc === undefined) {
    console.log(name)
    continue
  }
  console.time(name)
  for (const n of [...Array(1000000).keys()]) {
    testFunc(n)
  }
  console.timeEnd(name)
}

12voto

Saurabh Gokhale Punkte 51834

Die einfachste Art, eine Variable in eine Zeichenkette umzuwandeln, besteht darin, eine leere Zeichenkette zu dieser Variable hinzuzufügen.

5.41 + ''    // Result: the string '5.41'
Math.PI + '' // Result: the string '3.141592653589793'

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