所有浏览器都不支持toLocaleString()?

Abd*_* Pp 10 javascript formatting

我有这个简单的功能:

Chrome,Firefox,IE:

Number(1000000).toLocaleString()
"1 000 000" // in french system, the space is the separator instead of the comma
Run Code Online (Sandbox Code Playgroud)

Opera,Maxthon:

Number(1000000).toLocaleString()
"1000000"
Run Code Online (Sandbox Code Playgroud)

为什么Opera和Maxthon无法格式化呢?他们支持这种方法,但不以正确的方式执行它?

有没有toLocaleString()替代品?

Pau*_* S. 15

输出也将根据用户的语言环境设置而有所不同,即使Number.prototype.toLocaleString他们的浏览器支持,例如对我来说,en-GB,Number(1000000).toLocaleString();给我"1,000,000".

有没有toLocaleString()替代品?

为什么不写一个来做你想要的呢?例如,

function localeString(x, sep, grp) {
    var sx = (''+x).split('.'), s = '', i, j;
    sep || (sep = ' '); // default seperator
    grp || grp === 0 || (grp = 3); // default grouping
    i = sx[0].length;
    while (i > grp) {
        j = i - grp;
        s = sep + sx[0].slice(j, i) + s;
        i = j;
    }
    s = sx[0].slice(0, i) + s;
    sx[0] = s;
    return sx.join('.');
}
Run Code Online (Sandbox Code Playgroud)

现在

localeString(1000000.00001);
// "1 000 000.00001"
Run Code Online (Sandbox Code Playgroud)

  • `'abc'.split('').reverse().join('')`是''cba'`,但你仍然需要像这样循环它.只需循环下来.此外,''abc'.slice(-1)`是''c'`. (2认同)

Mik*_*uel 4

语言规范定义非常开放:

\n\n
\n

15.7.4.3Number.prototype.toLocaleString()

\n\n

生成一个字符串值,该值表示根据主机环境\xe2\x80\x99s 当前语言环境的约定格式化的数字值。此函数与实现相关,并且允许但不鼓励它返回与 toString 相同的内容

\n
\n\n

不同的浏览器允许以不同的方式实现它,并且可以根据用户选择的区域设置以不同的方式实现它。

\n