var formattedNumber = Math.round(yourNumber / 1000).toLocaleString() + "k";
Превратить вышеперечисленное в функцию или нет, если это необходимо.Я не знаю ни одной функции для этого или способа обслуживания неанглийских версий «k» (при условии, что они есть), но по крайней мере toLocaleString()
должен заботиться о запятой против полной точки дляпроблема тысяч.
ОБНОВЛЕНИЕ: я отправил вышеупомянутое, не проверяя это;когда я попробовал это, я обнаружил, что toLocaleString () отформатировал 1234 как 1234.00.Я думал об исправлении с помощью замены регулярных выражений для удаления конечных нулей, за исключением, конечно, я не могу быть уверен, какой символ toLocaleString () будет использовать для десятичной точки, так что это не будет работать.Я думаю, вы могли бы написать некоторый код, который использует toLocaleString () для «контрольного» числа (например, 1.1), чтобы увидеть во время выполнения, какой символ он использует для десятичного числа.
ОБНОВЛЕНИЕ 2 для вашего обновленного вопроса, вставивзапятые вручную, я сделал это так:
var unformattedNumber = 123456;
var a = unformattedNumber.toString().split("");
for (var i=a.length-3; i >0; i-=3)
a.splice(i,0,",");
var formattedNumber = a.join("") + "k";