在node.js中添加值

时间:2018-07-29 18:22:05

标签: node.js express

enter image description here

上方是以下代码段的结果

 var total_points = 0
for(var i = 0; i < req.body.requisites.length; i++){

    total_points = total_points + req.body.requisites[i].points
    console.log(req.body.requisites[i].points ,  total_points)
}
console.log('total points :' + total_points)
req.body.points = total_points

我不明白为什么它一次将结果连接起来(请参阅“总点数”之前的最后一个值),而下一次却正确计算出结果。

感谢您的帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

根据我之前的评论,似乎您的某些输入必须是字符串而不是数字,并且由于Java的强制规则在添加字符串和数字时会得到字符串串联而不是数学加法。

您可以将所有输入强制为数字,以便始终获得如下所示的加法运算:

var total_points = 0
for (var i = 0; i < req.body.requisites.length; i++) {
    total_points = total_points + (+req.body.requisites[i].points);
    console.log(req.body.requisites[i].points ,  total_points)
}
console.log('total points :' + total_points)
req.body.points = total_points

而且,使用.reduce()可能会更容易:

req.body.points = req.body.requisites.reduce((total, val) => total + (+val)), 0);

如果(+req.body.requisites[i].points)(+val)是数字字符串,则将其转换为数字。

答案 1 :(得分:0)

您的代码似乎还可以。

之所以会发生这种情况,是因为您要以 string 的形式发送req.body.requisites [points]的值,这就是为什么在添加时将其串联的原因。

检查您的输入或使用您通过的输入更新问题,即要求正文

希望这可以帮助您了解混乱的原因!