繁体   English   中英

如何将包含美元符号“$”的两个值相加? 我一直试图找出方法和属性,仍然没有线索

[英]How do you sum two values containing the dollar sign “$”? I have been trying to figure out the methods and properties, still no clue

//for example 
allInputs[22].value //equals $45 and
allInputs[4].value  // equals $70

allInputs[22].value + allInputs[4].value = "$45$70"

它等于“45美元70美元”。 但我只想总结价值。 如何总结这两个值以获得忽略美元符号的最终值?

您可以使用

"$" + (parseInt(allInputs[22].value.substring(1)) + parseInt(allInputs[22].value.substring(1)))

substring方法将摆脱$符号,而parseInt会将其转换为数字。 你需要它,因为如果你不使用它,它会将值连接为字符串。 请注意,我使用另一组括号来对数字求和。 这是因为,当解释器看到“$”时,它认为它应该连接字符串。 但我们想要对数字求和,然后将总和与“$”字符串连接起来。

您可以在值的开头使用reduce并检查非数字符号:

 var allInputs = ["$45","$70"]; var sum = allInputs.reduce(function(pre, curr){ if(isNaN(curr[0]))return pre+(+curr.slice(1)); return pre+curr; },0); console.log('$'+sum); 

这是一个通用函数表达式,它接受表单输入中的字符串值并返回一个数字。

const getNumber = (val) => Number(val.match(/[\d\.]+/));

你可以像这样使用它:

const sum = getNumber(allInputs[22].value) + getNumber(allInputs[4].value);

DEMO

注意:理想情况下,您应该将货币值($,£,€等)与值分开存储,这样就不会成为问题。

我想你需要parseFloat() 因此,以下将是我的助手功能。

 function addDollars(s1,s2){ var n1 = parseFloat(s1.replace(/[^0-9\\.]/g,"")), n2 = parseFloat(s2.replace(/[^0-9\\.]/g,"")); return "$"+ (n1+n2).toFixed(2); } console.log(addDollars("$123.42","$12.88")); 

您可以使用

parseFloat(allInputs[22].value.slice(1)) + parseFloat(allInputs[4].value.slice(1))

请记住,字符串是数组。 如果你想以“$”符号结束然后只是连接它。

您需要删除“$”并将strings转换为numbers以进行总结。

您可以删除带有replace的“$”,例如allInputs[22].value.replace('$', '')这将返回"42"作为字符串。
现在我们需要将此字符串转换为数字。 有很多方法可以做到这一点。 我在下面的解决方案中使用Number()

 var someMoney = '$50' var moreMoney = '$60' var toMuchMoney = "$" + Number(someMoney.replace('$', '')) + Number(moreMoney.replace('$', '')) console.log(toMuchMoney) 

为了解决这个问题,你应该知道的区别concatenationaddtion在JavaScript。

如果添加两个字符串,则会将两个字符串连接起来作为答案

"$45" + "$70" = "$45$70"

如果你添加两个整数,你会得到补充。

45 + 70 = 115

因此,要解决您的问题,您需要首先从变量中提取数字,然后对它们进行添加。 要提取数字,您可以使用任何方法,但我使用split 要将字符串转换为整数,您可以使用parseInt

 let num1 = "$45"; let num2 = "$70"; function getValue(num) { return parseInt(num.split('$')[1]); } let sum = getValue(num1) + getValue(num2); console.log("$" + sum); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM