代码实现货币格式化

73 阅读1分钟
  • 第一种方式:我们可以使用正则来处理
function formatPrice(price) { 
    return String(price).replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}

image.png

  • 第二种方式:也可以不使用正则,进行优雅的处理
function formatPrice(price) {
  return String(price).split('').reverse().reduce((prev, next, index) => {
      return (index % 3 ? next : next + ',') + prev
  })
}

image.png

  • 第三种方式:直接使用JS内置 API (toLocaleString),实现金额的格式化

(999999999).toLocaleString()

image.png

const options = { 
    style: 'currency', 
    currency: 'CNY', 
}
(999999).toLocaleString('zh-CN', options)

image.png

toLocaleString 可以接收两个可选参数:locales 和 options,而且这个 api在各大浏览器通用不存在兼容问题并且这个 api 不止存在 Number 的原型上,Array、Object、Date 原型上都有这个 api,并且格式化出来的值可以根据我们传入的参数出现各种结果,关于toLocaleString的参数及用法在MDN(Number.prototype.toLocaleString())中有详细的用法,感兴趣的小伙伴可以深入了解一下。