Разбиваем длинные числа на разряды

Задача: нужно разбить длинные числа (тысячи, миллионы) из списка на группы по разрядам: Х ХХХ ХХХ.

Для каждого из нужных элементов на странице проводим следующие манипуляции:

var spacing_text = $(this).text(),
    rest,
    left,
    right;
// приводим числа к целым, значения после запятой запоминаем
var comar = spacing_text.indexOf(',');
var spacing_length = spacing_text.length;
// если в числе есть дробь
if (comar < -1) {
    rest = spacing_text.slice(-(spacing_length - comar));
    spacing_text = spacing_text.slice(0, comar);
    spacing_length = spacing_text.length;
}
// смотрим, сколько раз разбить по 3
var rank = (spacing_length - 1) / 3;
for (var i=1; i<=rank; i++) {
    spacing_length = spacing_text.length;
    left = spacing_text.slice(0, spacing_length - i*3 - (i-1));
    right = spacing_text.slice(-(i*3 + (i-1)));
    spacing_text = left + ' ' + right;
}
$(this).text(spacing_text);
// пристёгиваем числа после запятой, если такие были
if (comar < -1) {
    spacing_text = spacing_text + rest;
    $(this).text(spacing_text);
}

Способ работает для любого количества знаков в числе.

Теги: