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; }
关键修改说明:
- 修复随机索引生成逻辑,用
arr.length - 1动态获取数组最后一位索引,避免硬编码数字导致的数组越界或适配问题。 - 使用
splice方法在选取国家后从原数组中移除,确保每个国家只被分到一个组,符合真实分组规则。 - 用对象存储所有分组,减少重复的变量声明和输出代码,同时方便遍历查询。
- 完善查询逻辑,遍历所有分组判断国家是否存在,并添加未找到的提示,提升交互体验。
内容的提问来源于stack exchange,提问作者Ozzie Perez
相关产品推荐
相关产品推荐

