Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript reduce函数未提供预期的和_Javascript - Fatal编程技术网

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);