【以千分位分隔】数字

110 阅读1分钟

话不多说,直接上代码

  1. 关键思路是先把数字转字符串,然后字符串的长度按照3的倍数用0补全,然后按照每三个数字进行切割,最后再删除前面补全的0
function formatNumber(num) {
  const str = num.toString();
  const len = str.length;
  const count = Math.ceil(len / 3);
  const result = str.padStart(count * 3, '0').match(/(\d{3})/g).join(',');
  const start = count * 3 - len;

  return result.slice(start)
}

console.log(formatNumber(1234567));  // 1,234,567
  1. 使用toLocaleString()
function formatNumber(num) {
  return num.toLocaleString();
}

console.log(formatNumber(1234567));  // 1,234,567
  1. 使用正则匹配
function formatNumber(num) {
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

console.log(formatNumber(1234567));  // 1,234,567