В PHP есть number_format. Какой аналог есть в JS/jQuery?
Полного аналога, наверное, нет.
Есть возможность вывести число в соответствии с настройками локали:
console.log(
Number((-12345.6789).toFixed(2)).toLocaleString(),
(-12345.6789).toLocaleString('en-US', {maximumFractionDigits: 2}),
);
// Или (новый API)
console.log(
new Intl.NumberFormat().format(Number(-12345.6789.toFixed(2))),
new Intl.NumberFormat('en-US', {maximumFractionDigits: 2}).format(-12345.6789),
);
Также несложно реализовать number_format с помощью toFixed, хотя во многих случаях решения выше может быть достаточно.
Посмотрим сигнатуру функции на php.net: number_format
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
Реализация:
function number_format( number, decimals = 0, dec_point = '.', thousands_sep = ',' ) {
let sign = number < 0 ? '-' : '';
let s_number = Math.abs(parseInt(number = (+number || 0).toFixed(decimals))) + "";
let len = s_number.length;
let tchunk = len > 3 ? len % 3 : 0;
let ch_first = (tchunk ? s_number.substr(0, tchunk) + thousands_sep : '');
let ch_rest = s_number.substr(tchunk)
.replace(/(\d\d\d)(?=\d)/g, '$1' + thousands_sep);
let ch_last = decimals ?
dec_point + (Math.abs(number) - s_number)
.toFixed(decimals)
.slice(2) :
'';
return sign + ch_first + ch_rest + ch_last;
}
console.log(number_format(-123.5678, 2, '.', ' '));
console.log(number_format(-1234.5678, 2, '.', ' '));
console.log(number_format(-12345.5678, 2, '.', ' '));
console.log(number_format(12345.5678, 2, '.', ' '));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости