9

Zastanawiałem się, czy możliwe jest formatowanie liczb w JavaScript ciągi szablonów, na przykład coś takiego:Ilość formatowania ciągów szablonu (JavaScript - ES6)

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

ewentualnie

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

Że Składnia oczywiście nie działa, to tylko ilustracja tego, czego szukam.

Jestem świadomy narzędzi, takich jak sprintf z underscore.string, ale wydaje się, że to coś, co JS powinien być w stanie zrobić pudełko, zwłaszcza biorąc pod uwagę moc ciągi szablonu.

EDIT

Jak wspomniano powyżej, już jestem świadomy 3rd narzędzi firm (np sprintf) i niestandardowych funkcji, aby to zrobić. Podobne pytania (np. JavaScript equivalent to printf/string.format) w ogóle nie zawierają wzmianek o szablonach, prawdopodobnie dlatego, że zostały zapytane, zanim pojawiły się ciągi szablonów ES6. Moje pytanie dotyczy ES6 i jest niezależne od implementacji. Cieszę się, że mogę przyjąć odpowiedź "Nie, to nie jest możliwe", jeśli tak jest, ale to, co byłoby wspaniałe, to albo informacja o nowej funkcji ES6, która to zapewnia, albo pewien wgląd w to, czy taka funkcja jest na jego droga.

+0

Jest to możliwe w programie Adobe JavaScript. 'util.printf' W przeciwnym razie musimy poczekać, aż ECMAScript 6 będzie dostępny ... – WhiteHat

+0

@WhiteHat - sprawdź swój kalendarz – Amit

+0

Tak, ale gdzie mogę go użyć? IE 9 jest standardowym problemem, w którym pracuję, po prostu narzekałem trochę. – WhiteHat

Odpowiedz

10

Nie, ES6 nie wprowadza żadnego nowego numeru funkcji formatowania, będzie musiał żyć z istniejącą .toExponential(fractionDigits), .toFixed(fractionDigits), .toPrecision(precision), .toString([radix]) i toLocaleString(…) (który został zaktualizowany do opcjonalnie wspierać ECMA-402 Standard, choć).
Ciągi szablonów nie mają nic wspólnego z formatowaniem liczb, po prostu odwołują się do wywołania funkcji (jeśli są oznaczone) lub łączenia ciągów (domyślnie).

Jeśli te metody Number nie są dla Ciebie wystarczające, będziesz musiał rzucić własną. Oczywiście możesz zapisać funkcję formatowania jako znacznik łańcucha szablonów, jeśli chcesz to zrobić.

3

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