第一个我想到的是使用正则来处理,不考虑小数的情况下:
1 2 3
| function test(num) { return String(num).replace(/(\d)(?=(\d{3})+$)/g, "$1,"); }
|
当然如果要考虑小数的话就得把数字先转化为字符串,然后 split 分割去第一部分即可。
1 2 3 4 5 6 7 8 9 10
| function test(n) { var n = n || 0; n = (n + "") .split(".") .map(function(s, i) { return i ? s : s.replace(/(\d)(?=(\d{3})+$)/g, "$1,"); }) .join("."); return n; }
|
其实还有一个更简单的方式,Node 下也可以使用:
1 2 3
| function test(num) { return num.toLocaleString('en-US') }
|
另外在 i18n 的数字处理上已经有 API 了。
1 2 3 4
| var number = 3500;
console.log(new Intl.NumberFormat().format(number));
|
而就处理速度而言,使用正则的方式更快一些,测试环境(Node 8.9.1 & Chrome 62) 。