Как переписать форматирование валюты JavaScript для сокращения суммы в долларах - PullRequest
0 голосов
/ 28 июня 2018

Я использую chartjs-plugin-datalabels для постоянного отображения меток данных над каждым набором данных диаграммы. Я использовал следующий код в каждом скрипте для отображения суммы валюты в долларах США:

plugins: {
    datalabels: {
        formatter: function(value, context) {
            return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        }
    }
}

, который затем выдает: $ #, ###, ###

Чтобы сэкономить место, как я могу переписать этот код для отображения вышеуказанного количества в сокращенной форме, например: $ #. # M . Первая запятая становится десятичной точкой, а остальные целые числа округляются.

Таким образом, у миллиардов будет B , у миллионов - M , а у тысяч - K и т. Д.

Примеры:

10 500 000 000 -> 10,5 млрд.

1 500 000 000 долларов США -> 1,5 миллиарда долларов США

$ 10 500,00 -> $ 10,5 млн

1 500 000 долларов США -> 1,5 миллиона долларов США

$ 10 500 -> $ 10,5 тыс.

1500 долларов -> 1,5 тысячи долларов

Также было бы полезно разбить часть .replace().

1 Ответ

0 голосов
/ 28 июня 2018

Нашел мой ответ здесь:

https://stackoverflow.com/a/14994860/7811137

function nFormatter(num) {
     if (num >= 1000000000) {
        return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
     }
     if (num >= 1000000) {
        return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
     }
     if (num >= 1000) {
        return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
     }
     return num;
}
...