当金额不是美元货币时,前面不要有 $ 符号

When the amount is not in USD currency don't have the $ symbol in the front

如何在以下函数中添加条件 --> 当货币不是 USD 时,不要在金额前面添加 $ 符号。

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"]);

==> .00 JPY

如果我理解你想要什么,你可以在你的函数中添加一个标志 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));

您可以传递可选的布尔值和 return 完整字符串,或者跳过第一个字符($ 符号)(如果是 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');

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));
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'); // ",000.00"
convertToCurrency(10000, 'JPY'); // "10,000.00 JPY"

一些备注:

  • 您当前的代码(修改 currency 参数)不会生成“$ 100 JPY”,而是“¥100”。不太一样…
  • 也许您对输出的调整太多了,应该只使用标准输出。 (最值得注意的是,将所有货币放在左侧或右侧,但避免混合使用)
  • 您可能会对 parameter currencyDisplay: 'symbol' / 'code' 感兴趣。如果可能,前者输出一个符号,如“$”或“¥”,后者输出一个 ISO 代码,如 "USD" 或 "JPY".