@Alex_vs_Predator
Начинающий веб-разработчик

Форматирование чисел на js. Как сделать пробелы в цене?

Подскажите, как можно с помощью js сделать пробел в числах?
У меня такая ситуация:

<div class="price">10200 руб.</div>

Нужно, чтобы при вводе 10200 выводилось число 10 200 руб.
  • Вопрос задан
  • 15218 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
$('.price').text((i, text) => {
  const [ price, currency ] = text.split(' ');
  return `${(+price).toLocaleString()} ${currency}`;
});

// или

document.querySelectorAll('.price').forEach(n => {
  n.textContent = n.textContent.replace(/\d(?=(\d{3})+\D)/g, '$& ');
});

Ну или (что желательно), перед выводом пропускайте цену через toLocaleString.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@fLipE
можно воспользоваться функцией наподобие этой:
function number_format( number, decimals, dec_point, thousands_sep ) {  // Format a number with grouped thousands
    var i, j, kw, kd, km;

    if( isNaN(decimals = Math.abs(decimals)) ){
        decimals = 2;
    }
    if( dec_point == undefined ){
        dec_point = ",";
    }
    if( thousands_sep == undefined ){
        thousands_sep = ".";
    }

    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

    if( (j = i.length) > 3 ){
        j = j % 3;
    } else{
        j = 0;
    }

    km = (j ? i.substr(0, j) + thousands_sep : "");
    kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
    kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");

    return km + kw + kd;
}
Ответ написан
Комментировать
@SailorStat
`${number}`.split('').reverse().map((el, index) => index % 3 !== 2 ? el : ` ${el}`).reverse().join('')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы