我写了一个代码来计算投票数。我得到的输出为138405,150000等。
我希望这些数字格式化为138,405。 如何使用纯JavaScript实现此目的?
答案 0 :(得分:1)
您需要先确定约定。你想要你的逗号分开两个数字,还是三个数字?
按照通常惯例,让我们想象它是3。
1000
应该成为1, 000
10000
应该成为10,000
100000
应该成为100,000
1000000
应该成为1,000,000
实现这一目标的代码可以像以下一样简单:
function formatWithComma(interval, num) {
var digits = String(num).split(''),
output = [];
digits.forEach(function(digit, index) {
output.push(digit);
if(index % interval === 0) {
output.push(',');
}
});
return digits.reverse().join('');
}
此函数期望以插入逗号的时间间隔和一个数字来调用,从中构建格式化字符串。
formatWithComma(3, 12345) === "12,345"
formatWithComma(2, 12345) === "1,23,45"
您可以更进一步,使用Javascript的partial application mechanism创建一个预加载第一个参数的格式函数。
var format = formatWithComma.bind(this, 3);
之后,对format
的任何调用都会在每个第3位数字处插入逗号。
答案 1 :(得分:1)
根据您的浏览器定位,您可以使用Number.prototype.toLocaleString()
根据您可以指定的区域设置格式化您的号码。示例在下面的链接页面上。
请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
例如:
var number = 123456.789;
console.log(number.toLocaleString('en-US'));
// → 123,456.789
如果未指定区域设置,则将使用用户浏览器区域设置。
答案 2 :(得分:0)
我想出了这个功能。它对我来说很好。
function addCommas(nStr) {
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}