我有一个功能,用户可以在其中输入数字,如" 5"," 10"," 0.47"," 0.5"等等 每次用户输入数据时,数据都会保存在一个数组中。
我使用以下代码在数组中添加所有数字:
$scope.uTotal = uMiles.reduce(addPrice, 0)
function addPrice(a, b) {
return a + b;
}
上面的代码成功添加了所有数字,但如果用户输入小数值,则不会添加小数值。
例如:
目前数组中的值低于此值,这是通过 console.log 收集的:
运行上述功能后屏幕上的输出为:
总计= 5
但实际上它应显示总计= 6.88
如何确保无论用户输入的数字是多少,并且正面显示在前面。
答案 0 :(得分:5)
在函数中使用parseFloat()
,你应该做得很好:
function addPrice(a, b)
{
return a + parseFloat(b);
}
答案 1 :(得分:1)
在addPrice
函数中,您使用运算符+
对值进行求和。
但是存在一个问题:uMiles
数组中的值是字符串。然后,addition operator +
连接字符串,而不是将数值相加。
要解决此问题,您必须将字符串转换为数字。
在reduce
之前,使用.map(Number)
:
uMiles.map(Number).reduce(addPrice, 0);
function addPrice(a, b) {
return a + b;
}
在addPrice
内,使用unary + operator:
uMiles.reduce(addPrice, 0);
function addPrice(a, b) {
return a + +b;
}