#frontend #intl
Несколько месяцев назад, я уже рассказывал вам про такую вещь, как Intl API. Тогда мы разбирались с датами, сегодня предлагаю научиться форматировать валюты с помощью следующей функции:
const formatCurrency = (value, locale, currencyCode, config = {}) => {
return new Intl.NumberFormat(locale, {
style: "currency",
currency: currencyCode,
...config,
}).format(value)
}
console.log(formatCurrency(123456, "ru-RU", "RUB"))
// 123 456,00 р.
console.log(formatCurrency(123456, "en-US", "USD"))
// $123,456.00Аргумент
config был добавлен мною для возможности расширения текущей конфигурации экземпляра Intl, например, можно добавить параметр maximumSignificantDigits для округления до 3 значащих цифр:console.log(formatCurrency(123456.789, 'ru-RU', 'RUB', { maximumSignificantDigits: 3 }))
// 123 000 р.По-хорошему, бы тут добавить какую-то проверку, что аргументы передаваемые в
config действительно находятся внутри Intl.NumberFormat и корректно им будут обработаны, а также защиту от перезаписывания заданных нами параметров, но моя цель была только в том, чтобы поделиться простым способом форматирования чисел с помощью встроенного браузерного API.Если верить спецификации, коды валют берутся из стандарта ISO 4217. Мне не удалось найти оригинальный список кодов валют по этому стандарту не в PDF, но зато в онлайне есть наш ОКВ, который основан на этом стандарте.
Подробнее: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat