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:
-
String(n)
-
n.toString()
-
""+n
-
n+""
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:
String(n)
n.toString()
""+n
n+""
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}`;
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.
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)
}
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.