Array.prototype.toLocaleString() 是 JavaScript 中将数组元素按本地化格式转为字符串的方法,自动依据语言区域格式化数字和日期,对字符串、布尔值等直接转换,null/undefined 转为空字符串,支持 locales 和 options 参数精细控制,适用于面向用户的展示场景。

Array.prototype.toLocaleString() 是 JavaScript 中将数组元素转为本地化格式字符串的方法,它会自动根据当前运行环境的 语言区域(locale) 和 数字/日期格式规则 格式化每个元素,再用逗号和空格连接。
基础用法:默认本地化格式
调用时无需参数,浏览器会使用系统或 JavaScript 运行时的默认 locale(如 zh-CN、en-US、de-DE):
- 数字会被加上千位分隔符(如
1234567.89→"1,234,567.89"或"1.234.567,89") - 日期对象会按 locale 显示完整日期时间(如
new Date(2023, 0, 1)→"1/1/2023"或"01.01.2023") - 字符串和布尔值直接转为字符串,不额外格式化
示例:
[1234567.89, new Date(2023, 0, 1), 'hello', true].toLocaleString()// 在中文环境可能输出:
// "1,234,567.89, 2023/1/1, hello, true"
指定 locale 和选项:精细控制格式
可传入 locales(语言标签数组)和 options(配置对象),让格式更符合目标地区习惯:
立即学习“Java免费学习笔记(深入)”;
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
-
locales如['de-DE']、['ja-JP', 'en-US'](备选顺序) -
options支持number、date、time相关配置,例如:{ minimumFractionDigits: 2, maximumFractionDigits: 2 } - 注意:该选项只影响 数组中支持格式化的类型(如 Number、Date),对字符串、null 等无效
示例(德语数字格式):
[1234567.89, 1000.5].toLocaleString('de-DE', {minimumFractionDigits: 2,
maximumFractionDigits: 2
})
// 输出:"1.234.567,89, 1.000,50"
处理混合类型数组的注意事项
数组中若含多种类型,toLocaleString() 会分别调用各元素自身的 toLocaleString() 方法:
- Number →
Number.prototype.toLocaleString() - Date →
Date.prototype.toLocaleString() - 自定义对象:若实现了
toLocaleString()方法,则调用它;否则调用toString() - null / undefined → 转为空字符串(
""),不是"null"或"undefined"
因此建议避免在关键业务中依赖未定义行为,尤其当数组含自定义对象时,应显式实现 toLocaleString()。
与 join() 和 toString() 的区别
对比常见转换方式:
-
arr.toString():简单逗号拼接,无格式化([1234.5]→"1234.5") -
arr.join(', '):仅连接,不调用任何toLocaleString,也不格式化内容 -
arr.toLocaleString():逐项本地化格式 + 默认逗号+空格分隔,适合展示给终端用户
真正需要“面向用户的数字/日期显示”时,优先用 toLocaleString();仅需结构化数据传输或调试时,用 toString() 或 JSON.stringify() 更合适。

















