You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

res.send返回结果错误但console.log打印同一份数据正常如何解决?

问题原因
  • 变量覆盖问题:你使用var声明的team1、team2属于函数作用域变量,循环过程中每次赋值都会覆盖上一次的结果。console.log是在每次循环内实时打印,所以会依次输出所有符合条件的队伍名,但循环结束后这两个变量仅保留最后一次循环的赋值,也就是你看到的France。
  • 第一个循环逻辑冗余:你遍历alldata的循环内永远只取索引为0和1的元素拼接,循环执行多少次结果都不变,属于无效代码,还会重复覆盖result变量。
解决方法

如果需要返回所有符合条件的队伍名称,你需要先声明一个数组存储所有匹配的结果,循环过程中把每个符合条件的队伍名追加到数组里,最后再通过res.send返回整个数组即可。

修正后的代码如下:

// 冗余循环直接简化,不需要遍历alldata
const alldata = wc2014.rounds.concat(wc2018.rounds);
const result = alldata[0].matches.concat(alldata[1].matches);
// 定义数组存储所有获胜队伍名称
const winTeams = [];

for (var key in result) {
  if(result[key].goals1.length > result[key].goals2.length){
    const team = result[key].team1.name; 
    console.log(team);
    winTeams.push(team)
  } else {
    const team = result[key].team2.name;
    console.log(team); 
    winTeams.push(team)
  }
}  

res.send(winTeams);

运行后res.send会返回["Germany", "France"],和控制台输出内容一致。

内容的提问来源于stack exchange,提问作者Feyza Keles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:15:02