Number.prototype.toLocaleString()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод toLocaleString() знаÑений Number возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ñ ÑзÑкозавиÑимÑм пÑедÑÑавлением ÑÑого ÑиÑла. Ð ÑеализаÑиÑÑ
Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой Intl.NumberFormat API ÑÑÐ¾Ñ Ð¼ÐµÑод пÑоÑÑо вÑзÑÐ²Ð°ÐµÑ Intl.NumberFormat.
ÐÑи каждом вÑзове toLocaleString пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð¸Ñк по болÑÑой базе локализованнÑÑ
ÑÑÑок, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑÑÑекÑивнÑм. Ðогда меÑод вÑзÑваеÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ Ñаз Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми паÑамеÑÑами, лÑÑÑе ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ Intl.NumberFormat и иÑполÑзоваÑÑ ÐµÐ³Ð¾ меÑод format(), поÑÐ¾Ð¼Ñ ÑÑо обÑÐµÐºÑ NumberFormat Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ Ð¿ÐµÑеданнÑе ÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ ÐºÐµÑиÑоваÑÑ Ð´Ð°Ð½Ð½Ñе, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÑледÑÑÑие вÑÐ·Ð¾Ð²Ñ format могли вÑполнÑÑÑ Ð¿Ð¾Ð¸Ñк Ñ Ð±Ð¾Ð»ÐµÐµ опÑеделÑннÑм конÑекÑÑом.
ÐнÑеÑакÑивнÑй пÑимеÑ
function eArabic(x) {
return x.toLocaleString("ar-EG");
}
console.log(eArabic(123456.789));
// Expected output: "١٢٣٬٤٥٦٫٧٨٩"
console.log(eArabic("123456.789"));
// Expected output: "123456.789"
console.log(eArabic(NaN));
// Expected output: "ÙÙØ³ رÙÙ
"
СинÑакÑиÑ
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
ÐаÑамеÑÑÑ
ÐаÑамеÑÑÑ locales и options изменÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑнкÑии и позволÑÑÑ Ð¿ÑиложениÑм опÑеделÑÑÑ ÑзÑк, пÑавила ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾ÑоÑого, ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ.
Ð ÑеализаÑиÑÑ
, поддеÑживаÑÑиÑ
Intl.NumberFormat API, ÑÑи паÑамеÑÑÑ ÑооÑвеÑÑÑвÑÑÑ Ð¿Ð°ÑамеÑÑам конÑÑÑÑкÑоÑа Intl.NumberFormat(). РеализаÑии без поддеÑжки Intl.NumberFormat Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ Ð¾Ð±Ð° паÑамеÑÑа, иÑполÑзÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ð¸ ÑоÑÐ¼Ð°Ñ Ð²Ð¾Ð·Ð²ÑаÑаемой ÑÑÑоки опÑеделÑемÑе Ñамой ÑеализаÑией.
localesÐеобÑзаÑелÑнÑй-
СÑÑока Ñ ÑзÑковÑм Ñегом BCP 47 или маÑÑив ÑÐ°ÐºÐ¸Ñ ÑÑÑок. СооÑвеÑÑÑвÑÐµÑ Ð¿Ð°ÑамеÑÑÑ
localesконÑÑÑÑкÑоÑа `Intl.NumberFormat().Ð ÑеализаÑиÑÑ Ð±ÐµÐ· поддеÑжки
Intl.NumberFormatÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ Ð¸ обÑÑно иÑполÑзÑеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ ÑÑÑÑойÑÑва. optionsÐеобÑзаÑелÑнÑй-
ÐбÑÐµÐºÑ Ð¾Ð¿ÑеделÑÑÑий вÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑоÑмаÑ. СооÑвеÑÑÑвÑÐµÑ Ð¿Ð°ÑамеÑÑÑ
optionsконÑÑÑÑкÑоÑаIntl.NumberFormat().Ð ÑеализаÑиÑÑ Ð±ÐµÐ· поддеÑжки
Intl.NumberFormatÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ.
СмоÑÑиÑе опиÑание конÑÑÑÑкÑоÑа Intl.NumberFormat() Ð´Ð»Ñ Ð¿Ð¾Ð´ÑобноÑÑей иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑиÑ
паÑамеÑÑов.
ÐозвÑаÑаемое знаÑение
СÑÑока, пÑедÑÑавлÑÑÑÐ°Ñ Ñказанное ÑиÑло в ÑооÑвеÑÑÑвии Ñ ÑзÑковÑми ÑÑебованиÑми.
Ð ÑеализаÑиÑÑ
Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой Intl.NumberFormat ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ ÑквиваленÑнÑм new Intl.NumberFormat(locales, options).format(number).
ÐÑимеÑание:
РболÑÑинÑÑве ÑлÑÑаев ÑоÑмаÑиÑование, возвÑаÑаемое toLocaleString(), единообÑазно. Ðднако ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑазнÑм в завиÑимоÑÑи Ð¾Ñ Ð²Ñемени, ÑзÑка и ÑеализаÑии â ÑÑо допÑÑкаеÑÑÑ ÑпеÑиÑикаÑией. Ðе ÑледÑÐµÑ ÑÑавниваÑÑ ÑезÑлÑÑÐ°Ñ toLocaleString() Ñо ÑÑаÑиÑеÑкими знаÑениÑми.
ÐÑимеÑÑ
>ÐÑполÑзование toLocaleString()
ÐÑи иÑполÑзовании без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ возвÑаÑаеÑÑÑ ÑÑÑока, оÑÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð² ÑооÑвеÑÑÑвии Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ Ð¸ наÑÑÑойками по ÑмолÑаниÑ.
var number = 3500;
console.log(number.toLocaleString()); // ÐÑобÑÐ°Ð·Ð¸Ñ '3,500' в локали U.S. English
ÐÑовеÑка поддеÑжки паÑамеÑÑов locales и options
ÐаÑамеÑÑÑ locales и options могÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð½Ðµ во вÑеÑ
ÑеализаÑиÑÑ
. Ð ÑеализаÑиÑÑ
без поддеÑжки инÑеÑнаÑионализаÑии toLocaleString() вÑегда иÑполÑзÑÐµÑ ÑиÑÑемнÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½Ðµ Ñем, ÑÑо вам нÑжно. ÐоÑколÑÐºÑ Ð»ÑÐ±Ð°Ñ ÑеализаÑиÑ, поддеÑживаÑÑÐ°Ñ Ð¿Ð°ÑамеÑÑÑ locales и options, должна поддеÑживаÑÑ Intl API, пÑовеÑиÑÑ Ð½Ð°Ð»Ð¸Ñие поÑледней можно Ñаким ÑпоÑобом:
function toLocaleStringSupportsLocales() {
return (
typeof Intl === "object" &&
!!Intl &&
typeof Intl.DateTimeFormat === "function"
);
}
ÐÑполÑзование паÑамеÑÑа locales
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе локализованнÑе ÑоÑмаÑÑ ÑиÑел. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑоÑмаÑа ÑзÑка, иÑполÑзÑемого в полÑзоваÑелÑÑком инÑеÑÑейÑе ваÑего пÑиложениÑ, ÑбедиÑеÑÑ, ÑÑо Ð²Ñ Ñказали ÑÑÐ¾Ñ ÑзÑк (и, возможно, неÑколÑко запаÑнÑÑ
ÑзÑков) иÑполÑзÑÑ Ð¿Ð°ÑамеÑÑ locales:
var number = 123456.789;
// Ð ÐеÑмании в каÑеÑÑве ÑазделиÑÐµÐ»Ñ Ñелой и дÑобной ÑаÑÑи иÑполÑзÑеÑÑÑ Ð·Ð°Ð¿ÑÑаÑ, а в каÑеÑÑве ÑазделиÑÐµÐ»Ñ ÑазÑÑдов ÑоÑка
console.log(number.toLocaleString("de-DE"));
// 123.456,789
// РРоÑÑии в каÑеÑÑве ÑазделиÑÐµÐ»Ñ Ñелой и дÑобной ÑаÑÑи иÑполÑзÑеÑÑÑ Ð·Ð°Ð¿ÑÑаÑ, а в каÑеÑÑве ÑазделиÑÐµÐ»Ñ ÑазÑÑдов пÑобел
console.log(number.toLocaleString("ru-RU"));
// 123 456,789
// РболÑÑинÑÑве аÑабоÑзÑÑнÑÑ
ÑÑÑан иÑполÑзÑÑÑ Ð½Ð°ÑÑоÑÑие аÑабÑкие ÑиÑÑÑ
console.log(number.toLocaleString("ar-EG"));
// ١٢٣٤٥٦٫٧٨٩
// Ð Ðндии иÑполÑзÑÑÑ ÑазделиÑели Ð´Ð»Ñ ÑÑÑÑÑ/лакÑ
/кÑоÑ
console.log(number.toLocaleString("en-IN"));
// 1,23,456.789
// ÐлÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ nu запÑаÑÐ¸Ð²Ð°ÐµÑ ÑиÑÑÐµÐ¼Ñ Ð½ÑмеÑаÑии, напÑимеÑ, киÑайÑкÑÑ Ð´ÐµÑÑÑиÑнÑÑ
console.log(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
// ä¸äºä¸,åäºå
.ä¸å
«ä¹
// ÐÑли запÑаÑиваемÑй ÑзÑк Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ поддеÑживаÑÑÑÑ, напÑимеÑ
// балийÑкий, оÑкаÑÑваемÑÑ Ð½Ð° запаÑной ÑзÑк, в данном ÑлÑÑае индонезийÑкий
console.log(number.toLocaleString(["ban", "id"]));
// 123.456,789
ÐÑполÑзование паÑамеÑÑа options
РезÑлÑÑаÑ, пÑедоÑÑавлÑемÑй меÑодом toLocaleString(), Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑоен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа options:
var number = 123456.789;
// ÐапÑаÑиваем ÑоÑÐ¼Ð°Ñ Ð²Ð°Ð»ÑÑÑ
console.log(
number.toLocaleString("de-DE", { style: "currency", currency: "EUR" }),
);
// 123.456,79 â¬
console.log(
number.toLocaleString("ru-RU", { style: "currency", currency: "RUB" }),
);
// 123 456,79 â½
// ЯпонÑÐºÐ°Ñ Ð¹ÐµÐ½Ð° не иÑполÑзÑÐµÑ Ð¼Ð»Ð°Ð´Ñие единиÑÑ
console.log(
number.toLocaleString("ja-JP", { style: "currency", currency: "JPY" }),
);
// ï¿¥123,457
// ÐгÑаниÑиваем до ÑÑÑÑ
знаÑаÑиÑ
ÑиÑÑ
console.log(number.toLocaleString("en-IN", { maximumSignificantDigits: 3 }));
// 1,23,000
// ÐÑполÑзÑем ÑзÑк ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ñл ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑиÑел
const num = 30000.65;
console.log(
num.toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
}),
);
// "30,000.65" еÑли ÑзÑк по ÑмолÑÐ°Ð½Ð¸Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкий или
// "30.000,65" еÑли ÑзÑк по ÑмолÑÐ°Ð½Ð¸Ñ Ð½ÐµÐ¼ÐµÑкий или
// "30 000,65" еÑли ÑзÑк по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑанÑÑзÑкий
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-number.prototype.tolocalestring> |
| ECMAScript® 2027 Internationalization API Specification> # sup-number.prototype.tolocalestring> |