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

JavaScript世界杯分组代码报错排查:8组4队生成及查询故障

2026世界杯分组代码报错排查与修复

问题代码中的错误点:

  • 语法错误:groupRandomizer函数里countries.indexOf[0]写法错误,indexOf是数组方法,需用括号调用;且此处完全不需要indexOf,直接取数组索引范围即可。
  • 重复选国逻辑:每次随机选取后未从原数组移除已选国家,会导致同一国家出现在多个分组中,不符合世界杯分组规则。
  • 查询逻辑错误:用lookForCountry == groupA将字符串与数组直接比较,永远无法匹配;且仅判断了A组,未覆盖其他7个分组。
  • 格式小问题:输出Group D时遗漏了冒号,导致格式不一致。

修正后的代码:

/*This program will create the 2026 world cup groups (8 groups of 4) with the countries for each group
being randomly selected from the list of countries*/

println("2026 World Cup Groups");
println("     🏆🏆🏆");
println(" ");

var countries = ["Mexico🇲🇽", "Brazil🇧🇷", "Poland🇵🇱", "Argentina🇦🇷", "Uruguay🇺🇾",
                 "England🏴󠁧󠁢󠁥󠁮󠁧󠁿", "Spain🇪🇸", "Germany🇩🇪", "Portugal🇵🇹", "Morocco🇲🇦", 
                 "Croatia🇭🇷", "Cameroon🇨🇲", "USA🇺🇸", "Ecuador🇪🇨", "Japan🇯🇵", "Saudi Arabia🇸🇦",
                 "Canada🇨🇦", "Senegal🇸🇳", "Netherlands🇳🇱", "Costa Rica🇨🇷", "Colombia🇨🇴", 
                 "Wales🏴󠁧󠁢󠁷󠁬󠁳󠁿", "Belgium🇧🇪", "Serbia🇷🇸", "Italy🇮🇹" , "France🇫🇷", "Australia🇦🇺",
                 "Denmark🇩🇰", "Tunisia🇹🇳", "Ghana🇬🇭", "Korea Republic🇰🇷", "Qatar🇶🇦"];
             
function start(){
    // 用对象存储所有分组,简化重复代码
    var groups = {
        "Group A": [],
        "Group B": [],
        "Group C": [],
        "Group D": [],
        "Group E": [],
        "Group F": [],
        "Group G": [],
        "Group H": []
    };

    // 为每个分组填充4个不重复的国家
    for(let groupName in groups){
        for(let i = 0; i < 4; i++){
            groups[groupName].push(groupRandomizer(countries));
        }
    }

    // 输出所有分组信息
    for(let groupName in groups){
        println(`${groupName}:`);
        println(groups[groupName]);
        println(" ");
    }

    var lookForCountry = readLine("What country are you looking for? ");
    // 遍历所有分组查询目标国家
    let found = false;
    for(let groupName in groups){
        if(groups[groupName].includes(lookForCountry)){
            println(`${lookForCountry} is in ${groupName}`);
            found = true;
            break;
        }
    }
    // 未找到时给出提示
    if(!found){
        println(`Could not find ${lookForCountry} in any group.`);
    }
}

function groupRandomizer(arr){
    // 生成合法的随机索引,动态适配数组长度
    var randomIndex = Randomizer.nextInt(0, arr.length - 1);
    // 取出选中的国家并从原数组移除,避免重复选取
    var selectedCountry = arr.splice(randomIndex, 1)[0];
    return selectedCountry;
}

关键修改说明:

  1. 修复随机索引生成逻辑,用arr.length - 1动态获取数组最后一位索引,避免硬编码数字导致的数组越界或适配问题。
  2. 使用splice方法在选取国家后从原数组中移除,确保每个国家只被分到一个组,符合真实分组规则。
  3. 用对象存储所有分组,减少重复的变量声明和输出代码,同时方便遍历查询。
  4. 完善查询逻辑,遍历所有分组判断国家是否存在,并添加未找到的提示,提升交互体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:05