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

如何修正Arsenal球队总进球数计算代码?预期71实际返回0

问题诊断与修复

核心问题:大小写不匹配

JSON数据源中的球队名称采用首字母大写格式(例如"Arsenal"),但调用run('arsenal')时传入的是全小写字符串,使用严格相等运算符比较时无法匹配,导致进球数累加逻辑从未触发,最终返回0。

次要问题:未声明循环变量

for(round of data)和for(match of round.matches)中的round和match未使用let/const声明,会成为全局变量,属于不良编码实践。


修正后的代码

var https = require('https');

async function main() {
    return await Promise.all([
        getRequestPromise('https://s3.eu-west-1.amazonaws.com/hackajob-assets1.p.hackajob/challenges/football_session/football.json')
    ]).then(results => {
        return results[0].rounds;
    });
}

function getRequestPromise(url) {
    return new Promise((resolve, reject) => {
        let request = https.get(url, (response) => {
          if (response.statusCode < 200 || response.statusCode > 299) {
             reject(new Error('Failed to load page, status code: ' + response.statusCode));
           }

          let body = [];
          response.on('data', (chunk) => body.push(chunk));
          response.on('end', () => resolve(JSON.parse(body.join(''))));
        });

        request.on('error', (err) => reject(err));
    });
}

async function run(teamKey) {
    const data = await main();
    let score = 0;
    // 统一转换为小写,避免大小写匹配问题
    const targetTeam = teamKey.toLowerCase();

    for(const round of data){
        for(const match of round.matches){
            const team1Name = match.team1.name.toLowerCase();
            const team2Name = match.team2.name.toLowerCase();
            
            if(team1Name === targetTeam){
                score += match.score1;
            } else if(team2Name === targetTeam){
                score += match.score2;
            }
        }
    }
    return score;
}

// 测试调用,现在会返回预期的71
run('arsenal').then(score => console.log(score));

关键改动说明

  1. 大小写统一处理:将传入的teamKey和JSON中的球队名称都转换为小写,使用toLowerCase()实现大小写不敏感的匹配,确保'arsenal'能匹配到'Arsenal'。
  2. 声明循环变量:在for...of循环中添加const声明round和match,避免全局变量污染。
  3. 添加测试输出:调用run后通过.then()打印结果,方便验证返回值是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:35:05