超实用!90%初中级前端不知道的 toLocaleString 隐藏用法

4,359 阅读1分钟

相信大部分初级前端得 toLocaleString 方法使用场景是,将 Date 对象 转成字符串形式。

const date = new Date()  
console.log(date.toLocaleString())  // 2022/1/5 下午4:05:19

除了这种用法之外,toLocaleString 还有很多种用法其中有不少用法可以满足一些常见得业务需求。

哪些类中包含这个API

Array.prototype.toLocaleString([locales[,options]])  
Number.prototype.toLocaleString([locales[,options]])
Date.prototype.toLocaleString([locales[,options]]) 

语法

toLocaleString([locales[,options]]);

参数

locales:可选,带有BCP 47语言标记的字符串或字符串数组,用来表示要转为目标语言的类型,具体参考这个 Intl
options:可选,配置属性对象。

  • style:数字展示样式

    style字段值说明
    decimal用于纯数字格式(默认)
    currency用于货币格式
    percent用于百分比格式
    unit用于单位格式
  • currency:当 options.style为currency 时,options.currency 用来表示货币单位的类型

    currency字段值说明
    USD使用美元格式(默认)
    EUR使用欧元格式
    CNY使用人民币格式

示例

 // 1、将数字进行千分位切割展示
var num = 1331231  
console.log(num.toLocaleString())  //  1,331,231

 // 2、将数字转为货币样式
var number = 123456.789;  
console.log(number.toLocaleString('zh', { style: 'currency', currency: 'EUR' }));    //€123,456.79   
console.log(number.toLocaleString('zh', { style: 'currency', currency: 'CNY' }));    //¥123,456.79   
console.log(number.toLocaleString('zh', { style: 'currency', currency: 'CNY',currencyDisplay:'code' }));    //CNY 123,456.79
console.log(number.toLocaleString('zh', { style: 'currency', currency: 'CNY',currencyDisplay:'name' }));    //123,456.79人民币

// 3、将数字转为百分比形式  
var num1 = 0.12 
var num2 = 2.45
console.log(num1.toLocaleString('zh',{style:'percent'}))  //  12%
console.log(num2.toLocaleString('zh',{style:'percent'}))  //  245%  

// 4、将纯数字/字符串数组所有元素用逗号拼接起来  
var numArray = [12,564,'55',5,'8']  
console.log(numArray.toLocaleString('zh'))  //  12,564,55,5,8

本文只着重展示一些日常需求可能会使用到的场景,更多用法大家可以去MDN官网 MDN官网-toLocaleString 去研究学习一下。