9

Mi chiedevo se è possibile formattare i numeri in JavaScript stringhe di modello, per esempio qualcosa come:formattazione dei numeri in stringhe di modello (Javascript - ES6)

var n = 5.1234; 
console.log(`This is a number: $.2d{n}`); 
\\ 5.12 

O forse

var n = 5.1234; 
console.log(`This is a number: ${n.toString('.2d')}`); 
\\ 5.12 

Quello la sintassi ovviamente non funziona, è solo un'illustrazione del tipo di cosa che sto cercando.

Sono a conoscenza di strumenti come sprintf da underscore.string, ma questo sembra qualcosa che JS dovrebbe essere in grado di fare fuori dalla scatola, soprattutto data la potenza delle stringhe di template.

EDIT

Come già detto, io sono già a conoscenza di strumenti 3rd party (per esempio sprintf) e funzioni personalizzate per fare questo. Domande simili (ad esempio JavaScript equivalent to printf/string.format) non menzionano affatto le stringhe del modello, probabilmente perché sono state chieste prima che esistessero le stringhe del modello ES6. La mia domanda è specifica per ES6 ed è indipendente dall'implementazione. Sono abbastanza felice di accettare una risposta di "No, questo non è possibile" se è il caso, ma ciò che sarebbe bello è l'informazione su una nuova funzionalità ES6 che fornisce questo, o qualche approfondimento sul fatto che una tale funzionalità sia sul suo modo.

+0

E 'possibile in Adobe JavaScript. 'util.printf' Altrimenti dobbiamo aspettare che ECMAScript 6 sia disponibile ... – WhiteHat

+0

@WhiteHat - controlla il tuo calendario – Amit

+0

Sì, ma dove posso usarlo? IE 9 è un problema standard in cui lavoro, mi lamento solo un po 'lì. – WhiteHat

risposta

10

No, ES6 non introduce alcun nuovo numero di funzioni di formattazione, si dovrà vivere con l'esistente .toExponential(fractionDigits), .toFixed(fractionDigits), .toPrecision(precision), .toString([radix]) e toLocaleString(…) (che è stato aggiornato per supportare il facoltativamente ECMA-402 Standard, però).
Le stringhe di modelli non hanno nulla a che fare con la formattazione numerica, si limitano a eseguire una chiamata di funzione (se contrassegnata) o una concatenazione di stringhe (impostazione predefinita).

Se quei metodi Number non sono sufficienti per te, dovrai eseguire il rollover. Ovviamente puoi scrivere la tua funzione di formattazione come tag stringa modello se desideri farlo.

3

var num = 5.1234; var n = num.toFixed (2);

Problemi correlati