Javascript reduce函数未提供预期的和
我有以下代码Javascript reduce函数未提供预期的和,javascript,Javascript,我有以下代码 var result_goals_against = []; memo_goals.reduce(function(res, value) { if (!res[value.player_id]) { res[value.player_id] = { goals_against: 0, player_id: value.player_id }; result_goals_against.push(res[value.player_
var result_goals_against = [];
memo_goals.reduce(function(res, value) {
if (!res[value.player_id]) {
res[value.player_id] = {
goals_against: 0,
player_id: value.player_id
};
result_goals_against.push(res[value.player_id])
}
res[value.player_id].goals_against += value.goals_against;
return res;
}, {});
这是输出:
我关心的是:row的实际值应该是1.row=10,6.row=2,其余的为0,脚本应该是求和的,但它似乎只是将这些值链接起来。我试图修改+=value.goals\u;对+=+value.goals\u的反对;因为我在mongodb中的值是字符串而不是数字
示例备忘录数据数组
据我所知,您有两个问题: 如果value.goals\u-country是字符串而不是数字,如您所说,那么将数字res[value.player\u-id].goals\u-country添加到字符串value.goals\u-country将得到一个字符串,而不是数字。在添加value.goals\u之前,需要将其解析为一个数字。 value.goals\u显然还包含数据中未定义的值。您需要验证该情况,并在加法中将其解析为0。 要解决上述两个问题,您可以尝试将第10行更改为:
res[value.player_id].goals_against += value.goals_against;
…致:
res[value.player_id].goals_against += (parseInt(value.goals_against) || 0);
数据在哪里?我感觉你在尝试用字符串而不是数字来操作…请展示你的备忘录结构和一个例子@cFreed我已经添加了样本数据,太好了!谢谢爱德华德!实际上我尝试了parseInt,因为+不起作用,但我也不知道如何添加| | 0。很高兴你在这里。我即将完成我的申请,长时间的工作让我无法发现新的东西:我想我必须开始写整数了,很高兴我能帮上忙!你可以通过将答案标记为已接受来表达你的感激之情,并让自己得到应得的休息;如果你能接受这个答案,我将不胜感激;我会的,但是按钮在哪里?
res[value.player_id].goals_against += (parseInt(value.goals_against) || 0);