toLocaleString() 方法返回这个数字在特定语言环境下的表示字符串。通过调用一个数字对象(或者数字字面量)的toLocaleString()方法并指定特定的地区参数,我们可以很方便的得到更适合的值。
numObj.toLocaleString([locales [, options]])
可选。缩写语言代码(BCP 47 language tag,例如: cmn-Hans-CN)的字符串或者这些字符串组成的数组.
下面扩展的使用方式是language[-scripts][-region]-u-nu-*,例如:zh-u-nu-hanidec(表示中文十进制数字) 。
nu
要使用的编号系统。可能的值有: “arab”, “arabext”, “bali”, “beng”, “deva”, “fullwide”, “gujr”, “guru”, “hanidec”(中文十进字), “khmr”, “knda”, “laoo”, “latn”, “limb”, “mlym”, “mong”, “mymr”, “orya”, “tamldec”, “telu”, “thai”, “tibt”.
可选. 包含一些或所有的下面属性的类:
“decimal” 用于纯数字格式;
“currency” 用于货币格式;
“percent” 用于百分比格式;
“unit” 用于单位格式
localeMatcher
使用的 local 的匹配算法. 可能的值有 "lookup 和 “best fit”; 默认值是 “best fit”. 有关此选项更多的信息, 请参见 Intl page.
style
要使用的格式样式,默认为 “decimal”。
numberingSystem
编号系统。可能的值包括:“arab”,“arabext”," bali",“beng”,“deva”,“fullwide”," gujr",“guru”,“hanidec”,“khmr”," knda",“laoo”, “latn”,“limb”,“mlym”," mong",“mymr”,“orya”,“tamldec”," telu",“thai”,“tibt”。
unit
unit 格式中使用的单位,可能的值为在 UTS #35, Part 2, Section 6 定义的核心单元标识符。已从完整列表中选择了一个单位子集以用于ECMAScript。可以将成对的简单单位与 “ -per-” 连接以组成一个复合单位。没有默认值;如果 style 为 “unit”,必须提供unit 属性。
unitDisplay
unit 格式化中使用的单位格式化样式,默认值为“ short”。
“long” (e.g., 16 litres)
“short“ (e.g., 16 l)
”narrow“ (e.g., 16l)
currency
在货币格式化中使用的货币符号. 可能的值是ISO的货币代码 (the ISO 4217 currency codes,) 例如 “USD” 表示美元, “EUR” 表示欧元, 或者 "CNY"是人民币 — 更多请参考 Current currency & funds code list。没有默认值,如果 style 是 “currency”,必须提 currency 属性.
currencyDisplay
如何在货币格式化中显示货币. 可能的值有 “symbol” 表示使用本地化的货币符号,例如 €, “code” 表示使用国际标准组织货币代码, “name” 表示使用本地化的货币名称,如 “dollar”; 默认值是 “symbol”.
useGrouping
是否使用分组分隔符,如千位分隔符或千/万/亿分隔符。可能的值是 true 和 false,默认值是 true。
下面的属性分为两组:minimumintegerdigits,minimumfractiondigits,maximumfractiondigits 作为一组,minimumsignificantdigits 和 maximumsignificantdigits 作为一组。如果定义了第二组中的任意一个属性,则忽略第一组的设置.
minimumIntegerDigits
使用的整数数字的最小数目.可能的值是从1到21,默认值是1.
minimumFractionDigits
使用的小数位数的最小数目.可能的值是从 0 到 20;默认为普通的数字和百分比格式为 0;默认为货币格式是由 ISO 4217 currency code list 提供 (如果列表中没有提供则值为 2)。
maximumFractionDigits
使用的小数位数的最大数目。可能的值是从 0 到 20;纯数字格式的默认值是minimumfractiondigits 和 3 中大的那一个;货币格式默认值是minimumfractiondigits 和 ISO 4217 currency code list 中大的那一个(如果列表中没有提供则值为2);百分比格式默认值是 minimumfractiondigits 和 0 中大的那一个。
minimumSignificantDigits
使用的有效数字的最小数目。可能的值是从1到21;默认值是1。
maximumSignificantDigits
使用的有效数字的最大数量。可能的值是从1到21;默认是 21.
notation
该号码应显示的格式,默认为 “standard”。
“standard” 纯数字格式;
“scientific” 返回格式化数字的大小顺序;
“engineering” 当被三除时返回十的指数
“compact” 代表指数的字符串,默认使用 “short” 格式
“compactDisplay” 仅在 notation 为 “compact” 时使用,采用 “short”(默认)或“long”
数字:
var a = 123456789;
console.log(a.toLocaleString()); // "123,456,789"
var number = 123456.789;
// 在德国点(.)号是作为千分位符号而逗号(,)则作为小数点。Orz
alert(number.toLocaleString("de-DE"));
// → 123.456,789
// 这才是真正的阿拉伯数字
alert(number.toLocaleString("ar-EG"));
// → ١٢٣٤٥٦٫٧٨٩
// 看看三哥的奇葩数字表示法
alert(number.toLocaleString("en-IN"));
// → 1,23,456.789
// 大汉子勃大茎深
alert(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
// → 一二三,四五六.七八九
// 当一个语言关键字可能不被支持的时候,还可以指定一个备用的关键字,比如下面情况:
alert(number.toLocaleString(["ban", "id"]));
// → 123.456,789
// request a currency format
alert(number.toLocaleString("de-DE", {style: "currency", currency: "EUR"}));
// → 123.456,79 €
// the Japanese yen doesn't use a minor unit
alert(number.toLocaleString("ja-JP", {style: "currency", currency: "JPY"}))
// → ¥123,457
// limit to three significant digits
alert(number.toLocaleString("en-IN", {maximumSignificantDigits: 3}));
// → 1,23,000
数组:
var a = [1,2,3];
console.log(a.toLocaleString()); // "1,2,3" 与toString()的返回值一致
var b = [11111,new Date(),{}];
console.log(b.toLocaleString()); // "11111,2016/2/23 下午12:31:09,[object Object]"
日期:
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// formats below assume the local time zone of the locale;
// America/Los_Angeles for the US
// US English uses month-day-year order and 12-hour time with AM/PM
console.log(date.toLocaleString('en-US'));
// → "12/19/2012, 7:00:00 PM"
// British English uses day-month-year order and 24-hour time without AM/PM
console.log(date.toLocaleString('en-GB'));
// → "20/12/2012 03:00:00"
// Korean uses year-month-day order and 12-hour time with AM/PM
console.log(date.toLocaleString('ko-KR'));
// → "2012. 12. 20. 오후 12:00:00"
// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(date.toLocaleString('ar-EG'));
// → "٢٠/١٢/٢٠١٢ ٥:٠٠:٠٠ ص"
// for Japanese, applications may want to use the Japanese calendar,
// where 2012 was the year 24 of the Heisei era
console.log(date.toLocaleString('ja-JP-u-ca-japanese'));
// → "24/12/20 12:00:00"
// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(date.toLocaleString(['ban', 'id']));
// → "20/12/2012 11.00.00"