Если сумма указана не в валюте США, на передней панели не отображается символ $. - PullRequest
3 голосов
/ 05 февраля 2020

Как добавить условие в следующую функцию -> Если валютой не является доллар США, не добавляйте знак $ в начале суммы.

var convertToCurrency = number => {
    if (!number) return '';
    return new Intl.NumberFormat('en', {
      style: 'currency',
      currency: 'USD'
    }).format(number);
  };

var amount = {
    amount: 10,
    currency: "JPY"
  };

convertToCurrency(amount["amount"]);

==> $10.00 JPY

Ответы [ 4 ]

3 голосов
/ 05 февраля 2020

Если я правильно понимаю, что вы хотите, вы можете добавить флаг к вашей функции isUSD или что-то в этом роде, а затем сделать следующее.

const convertToCurrency = (number, isUSD) => {
  if (!number) return '';
  if (isUSD) {
    return new Intl.NumberFormat('en', {
      style: 'currency',
      currency: 'USD'
    }).format(number);
  } else {
    return (Math.round(number * 100) / 100).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",");;
  }
};

console.log(convertToCurrency(10000, true));
console.log(convertToCurrency(10000, false));
1 голос
/ 05 февраля 2020
var convertToCurrency = (number, currency) => {
    if (!number || !currency) return '';

    var isUSD = (currency.toUpperCase() === 'USD');

    if (isUSD) {
        return new Intl.NumberFormat('en', {
            style: 'currency',
            currency: 'USD',
        }).format(number);
    } else {
        return new Intl.NumberFormat('en', {
            style: 'decimal',
        }).format(number) + ' ' + currency;
    }
};

convertToCurrency(10000, 'USD'); // "$10,000.00"
convertToCurrency(10000, 'JPY'); // "10,000.00 JPY"

Некоторые замечания:

  • Ваш текущий код (изменяющий параметр currency) не будет выдавать «$ 100 JPY», но «¥ 100». Не совсем то же самое ...
  • Возможно, вы слишком сильно настраиваете вывод, и, скорее, вам следует просто использовать стандартные выходы. (прежде всего, поместите все валюты слева или справа, но избегайте смешивания)
  • Вас может заинтересовать параметр currencyDisplay: 'symbol' / 'code'. Первый выводит символ, такой как «$» или «¥», если возможно, последний выводит код ISO, такой как «USD» или «JPY».
1 голос
/ 05 февраля 2020

Вы можете передать необязательное логическое значение и либо вернуть полную строку, либо пропустить первый символ (который является знаком $), если это USD.

 var convertToCurrency = (number, isUsd) => {
    if (!number) return '';
    var sliceFrom = isUsd ? 1 : 0;
    return new Intl.NumberFormat('en', {
      style: 'currency',
      currency: 'USD',
    }).format(number).slice(sliceFrom);
  };

  convertToCurrency(10000, true);

Если вы планируете использовать другие форматы для конвертации валюты, вы также можете передать строку format и проверить ее.

Поэтому вместо isUsd используйте currency

 var convertToCurrency = (number, currency) => {
        if (!number || !currency) return '';
        var sliceFrom = currency === 'USD' ? 1 : 0;
        return new Intl.NumberFormat('en', {
          style: 'currency',
          currency,
        }).format(number).slice(sliceFrom);
      };

 convertToCurrency(10000,'USD');
0 голосов
/ 05 февраля 2020

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat

var style = "currency";
var currency = 'USD'; //replace with your dynamic value

var convertToCurrency = (number, style, currency) => {
    if (!number) return '';
    return new Intl.NumberFormat('en', {
        style: style,
        currency: currency
    }).format(number);
};

console.log(convertToCurrency(10000, style, currency));
...