【问题标题】:Sum Formatted Amount Money in Javascript return NaN [duplicate]Javascript中的Sum Formatted Amount Money返回NaN [重复]
【发布时间】:2019-08-13 05:51:09
【问题描述】:

我有一个字符串数组,每个数组值都采用货币格式:

var sells = ['INR1,433,200.00','INR5,750.00','INR12,000.00','INR1,905.00','INR235.00'];

我尝试遍历这个数组的每个值,并将其相加以获得货币格式的总数

var total = 0;
sells.forEach(function(sell) {
    total += sell;
});
console.log(total);

当我看到浏览器控制台日志时,结果总是 NaN ,我希望结果是 INR1,453,090.00

【问题讨论】:

  • INR1,453,090.00INR5,750.00等无法转换为Number
  • 问题是您尝试在数组中添加非数字字符 (INR) 的值。首先,删除然后添加它们
  • 您必须先从 sells 数组中的每个值中删除 INR 前缀,然后将这些值解析为整数,否则您无法对这样的字符串求和
  • 试试total += +sell.replace(/[^\d.]/g, '')
  • 我强烈建议您的数组应该包含简单的浮点数,然后在仅显示时格式化

标签: javascript jquery formatting


【解决方案1】:

您替换INR 和逗号并将String 转换为Number

var sells = ['INR1,433,200.00','INR5,750.00','INR12,000.00','INR1,905.00','INR235.00'];

var total = 0;
sells.forEach(function(sell) {
    total += +sell.replace('INR','').replace(/,/g,'');
});
console.log(total);

你也可以使用reduce:

var sells = ['INR1,433,200.00', 'INR5,750.00', 'INR12,000.00', 'INR1,905.00', 'INR235.00'];
console.log(sells.reduce((acc, val) => acc + +val.replace('INR', '').replace(/,/g, ''), 0));

【讨论】:

  • 如何重新格式化结果?
  • @jojo 在这里帮助你的是一个人,而不是一台机器。至少要说“谢谢”
猜你喜欢
  • 2011-07-03
  • 2018-04-11
  • 2018-01-07
  • 2021-12-28
  • 1970-01-01
  • 2016-12-19
  • 2015-10-25
  • 2021-09-12
  • 2020-03-25
相关资源
最近更新 更多