键是缩写。例如,1m
代替1000000
,12k
代替12000
等 - 就像在StackOverflow上一样!
我不确定除了我尝试过之外还要添加什么:
format numbers abbreviated javascript
format numbers short javascript
还有其他一些搜索,并且没有运气地搜索结果。我觉得某人之前必须这样做,讨厌重新发明轮子等等!
干杯
编辑:我想要一个号码,即12345
并将其转换为12k
抱歉,我不太清楚!
答案 0 :(得分:4)
这是我很久以前写过的一些代码,但它运行正常。它甚至支持小数。
function is_numeric(string) {
for(var i = 0; i < string.length; i++) {
if(string.charAt(i) < '0' || string.charAt(i) > '9') {
return false;
}
}
return true;
}
function charValueMultiplier(letter) {
switch(letter) {
case 'M':
case 'm': return 1000000;
case 'k':
case 'K': return 1000;
default: return 0;
}
}
// parse string like 1.5M or 10k and return the number
function parseNumber(string) {
string = string.replace(/ /g, ''); // remove spaces
var total = 0;
var partial = 0;
var partialFraction = 0;
var fractionLength = 0;
var isFraction = false;
// process the string; update total if we find a unit character
for(var i = 0; i < string.length; i++) {
var c = string.substr(i, 1);
if(c == '.' || c == ',') {
isFraction = true;
}
else if(is_numeric(c)) {
if(isFraction) {
partialFraction = partialFraction * 10 + parseInt(c, 10);
fractionLength++;
}
else {
partial = partial * 10 + parseInt(c, 10);
}
}
else {
total += charValueMultiplier(c) * partial + charValueMultiplier(c) * partialFraction / Math.pow(10, fractionLength);
partial = 0;
partialFraction = 0;
fractionLength = 0;
isFraction = false;
}
}
return Math.round(total + partial + partialFraction / Math.pow(10, fractionLength));
}
答案 1 :(得分:1)
我制作了一个npm包,可以为您执行此操作:https://www.npmjs.com/package/approximate-number
Node.js(或浏览器通过Browserify)的用法:
npm install --save approximate-number
然后在你的代码中:
var approx = require('approximate-number');
approx(123456); // "123k"
或者,通过Bower在浏览器中使用:
bower install approximate-number
然后
window.approximateNumber(123456); // "123k"
答案 2 :(得分:0)
如果我理解正确,您 一个数字n
,并希望将其格式化为字符串。然后
// n being the number to be formatted
var s = "" + n; // cast as string
if (n >= 1000000) {
s = s.substring(0, s.length - 6) + "M";
} else if (n >= 1000) {
s = s.substring(0, s.length - 3) + "k";
}
应该做的工作。您当然可以根据需要进行扩展,甚至可以包含数字< 1
。