feat: 世界杯小程序数据层 - 球队数据/赛程数据/开发计划

This commit is contained in:
nepiedg
2026-04-28 16:42:05 +08:00
parent baeb5bd179
commit 7440a85aa9
4 changed files with 894 additions and 0 deletions
+233
View File
@@ -0,0 +1,233 @@
const venues = [
{ id: 'mexico-city', city: '墨西哥城' },
{ id: 'guadalajara', city: '瓜达拉哈拉' },
{ id: 'monterrey', city: '蒙特雷' },
{ id: 'toronto', city: '多伦多' },
{ id: 'vancouver', city: '温哥华' },
{ id: 'new-york-new-jersey', city: '纽约/新泽西' },
{ id: 'los-angeles', city: '洛杉矶' },
{ id: 'dallas', city: '达拉斯' },
{ id: 'kansas-city', city: '堪萨斯城' },
{ id: 'houston', city: '休斯敦' },
{ id: 'atlanta', city: '亚特兰大' },
{ id: 'philadelphia', city: '费城' },
{ id: 'seattle', city: '西雅图' },
{ id: 'san-francisco-bay-area', city: '旧金山湾区' },
{ id: 'boston', city: '波士顿' },
{ id: 'miami', city: '迈阿密' }
]
const groups = {
A: ['usa', 'colombia', 'senegal', 'new-zealand'],
B: ['england', 'iran', 'wales', 'saudi-arabia'],
C: ['argentina', 'mexico', 'poland', 'australia'],
D: ['france', 'denmark', 'tunisia', 'peru'],
E: ['spain', 'germany', 'japan', 'costa-rica'],
F: ['belgium', 'croatia', 'morocco', 'canada'],
G: ['brazil', 'switzerland', 'cameroon', 'south-korea'],
H: ['portugal', 'uruguay', 'ghana', 'ecuador'],
I: ['netherlands', 'serbia', 'algeria', 'paraguay'],
J: ['italy', 'egypt', 'nigeria', 'honduras'],
K: ['czechia', 'turkiye', 'chile', 'china'],
L: ['austria', 'scotland', 'jamaica', 'qatar']
}
const groupPairings = [
[0, 1],
[2, 3],
[0, 2],
[1, 3],
[0, 3],
[1, 2]
]
const kickoffSlotsUtc = ['16:00:00Z', '19:00:00Z', '22:00:00Z', '01:00:00Z']
const knockoutRounds = [
{
stage: 'round32',
date: '2026-07-03',
pairings: [
['1A', '3CDE'],
['2A', '2B'],
['1B', '3EFG'],
['1C', '3ABF'],
['2C', '2D'],
['1D', '3GHI'],
['1E', '3JKL'],
['2E', '2F'],
['1F', '3ABC'],
['1G', '3DEF'],
['2G', '2H'],
['1H', '3IJK'],
['1I', '3KLA'],
['2I', '2J'],
['1J', '3LBC'],
['1K', '1L']
]
},
{
stage: 'round16',
date: '2026-07-08',
pairings: [
['W73', 'W74'],
['W75', 'W76'],
['W77', 'W78'],
['W79', 'W80'],
['W81', 'W82'],
['W83', 'W84'],
['W85', 'W86'],
['W87', 'W88']
]
},
{
stage: 'quarter',
date: '2026-07-12',
pairings: [
['W89', 'W90'],
['W91', 'W92'],
['W93', 'W94'],
['W95', 'W96']
]
},
{
stage: 'semi',
date: '2026-07-16',
pairings: [
['W97', 'W98'],
['W99', 'W100']
]
},
{
stage: 'final',
date: '2026-07-19',
pairings: [['W101', 'W102']]
}
]
function addDays(date, days) {
const next = new Date(`${date}T00:00:00Z`)
next.setUTCDate(next.getUTCDate() + days)
return next.toISOString().slice(0, 10)
}
function kickoffUtc(date, slotIndex) {
const dayOffset = kickoffSlotsUtc[slotIndex % kickoffSlotsUtc.length] === '01:00:00Z' ? 1 : 0
return `${addDays(date, dayOffset)}T${kickoffSlotsUtc[slotIndex % kickoffSlotsUtc.length]}`
}
function kickoffBeijing(utcValue) {
const date = new Date(utcValue)
const parts = new Intl.DateTimeFormat('zh-CN', {
timeZone: 'Asia/Shanghai',
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
hour12: false
}).formatToParts(date)
const value = (type) => parts.find((part) => part.type === type)?.value
return `${value('year')}-${value('month')}-${value('day')} ${value('hour')}:${value('minute')}`
}
function createMatch({ id, matchday, stage, group, homeTeamId, awayTeamId, utc, venue }) {
return {
id,
matchday,
stage,
group,
home_team_id: homeTeamId,
away_team_id: awayTeamId,
kickoff_utc: utc,
kickoff_beijing: kickoffBeijing(utc),
venue_id: venue.id,
venue_city: venue.city,
status: 'scheduled',
home_score: null,
away_score: null
}
}
function buildGroupStage() {
const matches = []
const groupLetters = Object.keys(groups)
let id = 1
for (let round = 0; round < 3; round += 1) {
for (let groupIndex = 0; groupIndex < groupLetters.length; groupIndex += 1) {
const group = groupLetters[groupIndex]
const teams = groups[group]
const matchDate = addDays('2026-06-11', round * 6 + Math.floor(groupIndex / 2))
for (let pairIndex = 0; pairIndex < 2; pairIndex += 1) {
const [homeIndex, awayIndex] = groupPairings[round * 2 + pairIndex]
const globalIndex = id - 1
const utc = kickoffUtc(matchDate, globalIndex)
const venue = venues[globalIndex % venues.length]
matches.push(createMatch({
id,
matchday: round * 6 + Math.floor(groupIndex / 2) + 1,
stage: 'group',
group,
homeTeamId: teams[homeIndex],
awayTeamId: teams[awayIndex],
utc,
venue
}))
id += 1
}
}
}
return matches
}
function qualifierId(seed) {
if (seed.startsWith('W')) return `winner-match-${seed.slice(1)}`
const position = seed[0]
const group = seed.slice(1)
if (position === '1') return `group-${group.toLowerCase()}-winner`
if (position === '2') return `group-${group.toLowerCase()}-runner-up`
return `best-third-${group.toLowerCase()}`
}
function buildKnockoutStage(startId) {
const matches = []
let id = startId
knockoutRounds.forEach((round, roundIndex) => {
round.pairings.forEach(([homeSeed, awaySeed], pairIndex) => {
const roundDayOffset = Math.floor(pairIndex / 2)
const slotIndex = pairIndex + roundIndex
const utc = kickoffUtc(addDays(round.date, roundDayOffset), slotIndex)
const venue = venues[(id + 3) % venues.length]
matches.push(createMatch({
id,
matchday: 23 + roundIndex * 4 + roundDayOffset,
stage: round.stage,
group: null,
homeTeamId: qualifierId(homeSeed),
awayTeamId: qualifierId(awaySeed),
utc,
venue
}))
id += 1
})
})
return matches
}
const schedule = [
...buildGroupStage(),
...buildKnockoutStage(73)
]
export default schedule
+628
View File
@@ -0,0 +1,628 @@
const teams = [
{
id: 'usa',
name: '美国',
name_en: 'United States',
nickname: '山姆大叔',
group: 'A',
flag: '🇺🇸',
confederation: 'CONCACAF',
fifa_ranking: 15,
best_result: '季军(1930',
coach: '毛里西奥·波切蒂诺',
style: '身体素质出色,节奏快,擅长边路冲击和高位压迫。'
},
{
id: 'colombia',
name: '哥伦比亚',
name_en: 'Colombia',
nickname: '咖啡军团',
group: 'A',
flag: '🇨🇴',
confederation: 'CONMEBOL',
fifa_ranking: 13,
best_result: '八强(2014',
coach: '内斯托尔·洛伦索',
style: '技术细腻,前场个人能力强,转换进攻速度快。'
},
{
id: 'senegal',
name: '塞内加尔',
name_en: 'Senegal',
nickname: '特兰加雄狮',
group: 'A',
flag: '🇸🇳',
confederation: 'CAF',
fifa_ranking: 18,
best_result: '八强(2002',
coach: '帕普·蒂亚乌',
style: '对抗强硬,攻防转换直接,边路速度和身体压迫感突出。'
},
{
id: 'new-zealand',
name: '新西兰',
name_en: 'New Zealand',
nickname: '全白军团',
group: 'A',
flag: '🇳🇿',
confederation: 'OFC',
fifa_ranking: 83,
best_result: '小组赛(1982、2010',
coach: '达伦·贝兹利',
style: '阵型纪律性强,重视定位球和防守组织。'
},
{
id: 'england',
name: '英格兰',
name_en: 'England',
nickname: '三狮军团',
group: 'B',
flag: '\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}',
confederation: 'UEFA',
fifa_ranking: 4,
best_result: '冠军(1966',
coach: '托马斯·图赫尔',
style: '阵容厚度深,边路与中路都具备强推进能力,定位球威胁大。'
},
{
id: 'iran',
name: '伊朗',
name_en: 'Iran',
nickname: '波斯铁骑',
group: 'B',
flag: '🇮🇷',
confederation: 'AFC',
fifa_ranking: 21,
best_result: '小组赛(多届)',
coach: '阿米尔·加莱诺伊',
style: '防守硬度高,反击简洁,善于利用中锋支点和定位球。'
},
{
id: 'wales',
name: '威尔士',
name_en: 'Wales',
nickname: '红龙军团',
group: 'B',
flag: '\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}',
confederation: 'UEFA',
fifa_ranking: 33,
best_result: '八强(1958',
coach: '克雷格·贝拉米',
style: '整体跑动积极,重视边路速度和快速反击。'
},
{
id: 'saudi-arabia',
name: '沙特阿拉伯',
name_en: 'Saudi Arabia',
nickname: '西亚绿鹰',
group: 'B',
flag: '🇸🇦',
confederation: 'AFC',
fifa_ranking: 58,
best_result: '十六强(1994',
coach: '埃尔韦·勒纳尔',
style: '脚下技术细腻,敢于前压,攻守节奏变化明显。'
},
{
id: 'argentina',
name: '阿根廷',
name_en: 'Argentina',
nickname: '潘帕斯雄鹰',
group: 'C',
flag: '🇦🇷',
confederation: 'CONMEBOL',
fifa_ranking: 1,
best_result: '冠军(1978、1986、2022',
coach: '利昂内尔·斯卡洛尼',
style: '控球与个人创造力兼备,中前场衔接细腻,比赛控制力强。'
},
{
id: 'mexico',
name: '墨西哥',
name_en: 'Mexico',
nickname: '仙人掌军团',
group: 'C',
flag: '🇲🇽',
confederation: 'CONCACAF',
fifa_ranking: 14,
best_result: '八强(1970、1986',
coach: '哈维尔·阿吉雷',
style: '传控基础扎实,边路推进积极,主场氛围能放大压迫强度。'
},
{
id: 'poland',
name: '波兰',
name_en: 'Poland',
nickname: '白鹰军团',
group: 'C',
flag: '🇵🇱',
confederation: 'UEFA',
fifa_ranking: 37,
best_result: '季军(1974、1982',
coach: '扬·乌尔班',
style: '中锋支点突出,打法务实,重视防守站位和禁区终结。'
},
{
id: 'australia',
name: '澳大利亚',
name_en: 'Australia',
nickname: '袋鼠军团',
group: 'C',
flag: '🇦🇺',
confederation: 'AFC',
fifa_ranking: 24,
best_result: '十六强(2006、2022',
coach: '托尼·波波维奇',
style: '身体对抗强,执行力稳定,擅长长传冲吊和定位球。'
},
{
id: 'france',
name: '法国',
name_en: 'France',
nickname: '高卢雄鸡',
group: 'D',
flag: '🇫🇷',
confederation: 'UEFA',
fifa_ranking: 2,
best_result: '冠军(1998、2018',
coach: '迪迪埃·德尚',
style: '攻守平衡,纵深速度顶级,反击和阵地战都具备强杀伤力。'
},
{
id: 'denmark',
name: '丹麦',
name_en: 'Denmark',
nickname: '丹麦童话',
group: 'D',
flag: '🇩🇰',
confederation: 'UEFA',
fifa_ranking: 20,
best_result: '八强(1998',
coach: '布赖恩·里默',
style: '团队结构清晰,传跑默契,边翼卫和中场组织能力突出。'
},
{
id: 'tunisia',
name: '突尼斯',
name_en: 'Tunisia',
nickname: '迦太基雄鹰',
group: 'D',
flag: '🇹🇳',
confederation: 'CAF',
fifa_ranking: 49,
best_result: '小组赛(多届)',
coach: '萨米·特拉贝尔西',
style: '防守紧凑,拼抢积极,依靠快速转移寻找反击机会。'
},
{
id: 'peru',
name: '秘鲁',
name_en: 'Peru',
nickname: '印加军团',
group: 'D',
flag: '🇵🇪',
confederation: 'CONMEBOL',
fifa_ranking: 42,
best_result: '八强(1970',
coach: '曼努埃尔·巴雷托',
style: '地面配合细腻,边中结合流畅,讲究节奏控制。'
},
{
id: 'spain',
name: '西班牙',
name_en: 'Spain',
nickname: '斗牛士军团',
group: 'E',
flag: '🇪🇸',
confederation: 'UEFA',
fifa_ranking: 3,
best_result: '冠军(2010',
coach: '路易斯·德拉富恩特',
style: '控球传导成熟,边锋突破锐利,善于通过连续传递撕开空间。'
},
{
id: 'germany',
name: '德国',
name_en: 'Germany',
nickname: '德国战车',
group: 'E',
flag: '🇩🇪',
confederation: 'UEFA',
fifa_ranking: 9,
best_result: '冠军(1954、1974、1990、2014',
coach: '尤利安·纳格尔斯曼',
style: '攻防节奏快,压迫体系鲜明,中前场轮转和远射能力强。'
},
{
id: 'japan',
name: '日本',
name_en: 'Japan',
nickname: '蓝武士',
group: 'E',
flag: '🇯🇵',
confederation: 'AFC',
fifa_ranking: 17,
best_result: '十六强(2002、2010、2018、2022',
coach: '森保一',
style: '传控细腻,整体移动快,擅长高强度逼抢和边路渗透。'
},
{
id: 'costa-rica',
name: '哥斯达黎加',
name_en: 'Costa Rica',
nickname: '加勒比海盗',
group: 'E',
flag: '🇨🇷',
confederation: 'CONCACAF',
fifa_ranking: 54,
best_result: '八强(2014',
coach: '米格尔·埃雷拉',
style: '防守韧性强,门将传统出色,擅长低位防守后的快速反击。'
},
{
id: 'belgium',
name: '比利时',
name_en: 'Belgium',
nickname: '欧洲红魔',
group: 'F',
flag: '🇧🇪',
confederation: 'UEFA',
fifa_ranking: 8,
best_result: '季军(2018',
coach: '鲁迪·加西亚',
style: '中前场创造力强,进攻层次丰富,依靠球星能力制造机会。'
},
{
id: 'croatia',
name: '克罗地亚',
name_en: 'Croatia',
nickname: '格子军团',
group: 'F',
flag: '🇭🇷',
confederation: 'UEFA',
fifa_ranking: 10,
best_result: '亚军(2018',
coach: '兹拉特科·达利奇',
style: '中场控制力强,比赛经验丰富,擅长在胶着局面中掌控节奏。'
},
{
id: 'morocco',
name: '摩洛哥',
name_en: 'Morocco',
nickname: '亚特拉斯雄狮',
group: 'F',
flag: '🇲🇦',
confederation: 'CAF',
fifa_ranking: 12,
best_result: '四强(2022',
coach: '瓦利德·雷格拉吉',
style: '防守组织严密,边路冲击强,反击速度和对抗质量很高。'
},
{
id: 'canada',
name: '加拿大',
name_en: 'Canada',
nickname: '枫叶军团',
group: 'F',
flag: '🇨🇦',
confederation: 'CONCACAF',
fifa_ranking: 30,
best_result: '小组赛(1986、2022',
coach: '杰西·马什',
style: '速度优势明显,边路推进犀利,强调前场压迫和纵向冲击。'
},
{
id: 'brazil',
name: '巴西',
name_en: 'Brazil',
nickname: '桑巴军团',
group: 'G',
flag: '🇧🇷',
confederation: 'CONMEBOL',
fifa_ranking: 6,
best_result: '冠军(1958、1962、1970、1994、2002',
coach: '卡洛·安切洛蒂',
style: '个人技术顶级,边锋爆点多,进攻端兼具即兴创造和团队配合。'
},
{
id: 'switzerland',
name: '瑞士',
name_en: 'Switzerland',
nickname: '钟表匠',
group: 'G',
flag: '🇨🇭',
confederation: 'UEFA',
fifa_ranking: 19,
best_result: '八强(1934、1938、1954',
coach: '穆拉特·雅金',
style: '体系稳定,防线协作成熟,擅长通过中场压迫限制对手。'
},
{
id: 'cameroon',
name: '喀麦隆',
name_en: 'Cameroon',
nickname: '非洲雄狮',
group: 'G',
flag: '🇨🇲',
confederation: 'CAF',
fifa_ranking: 51,
best_result: '八强(1990',
coach: '马克·布里斯',
style: '身体冲击力强,攻防转换直接,依靠速度和对抗制造混乱。'
},
{
id: 'south-korea',
name: '韩国',
name_en: 'South Korea',
nickname: '太极虎',
group: 'G',
flag: '🇰🇷',
confederation: 'AFC',
fifa_ranking: 23,
best_result: '四强(2002',
coach: '洪明甫',
style: '跑动覆盖大,反击速度快,前场压迫和边路推进有威胁。'
},
{
id: 'portugal',
name: '葡萄牙',
name_en: 'Portugal',
nickname: '五盾军团',
group: 'H',
flag: '🇵🇹',
confederation: 'UEFA',
fifa_ranking: 7,
best_result: '季军(1966',
coach: '罗伯托·马丁内斯',
style: '技术型球员密集,边路和肋部创造力强,阵地战办法多。'
},
{
id: 'uruguay',
name: '乌拉圭',
name_en: 'Uruguay',
nickname: '天蓝军团',
group: 'H',
flag: '🇺🇾',
confederation: 'CONMEBOL',
fifa_ranking: 11,
best_result: '冠军(1930、1950',
coach: '马塞洛·贝尔萨',
style: '侵略性强,压迫节奏高,兼具南美技术和硬朗对抗。'
},
{
id: 'ghana',
name: '加纳',
name_en: 'Ghana',
nickname: '黑星军团',
group: 'H',
flag: '🇬🇭',
confederation: 'CAF',
fifa_ranking: 75,
best_result: '八强(2010',
coach: '奥托·阿多',
style: '中场运动能力强,反击推进快,依靠身体和速度拉开空间。'
},
{
id: 'ecuador',
name: '厄瓜多尔',
name_en: 'Ecuador',
nickname: '高原雄鹰',
group: 'H',
flag: '🇪🇨',
confederation: 'CONMEBOL',
fifa_ranking: 25,
best_result: '十六强(2006',
coach: '塞巴斯蒂安·贝卡塞塞',
style: '身体机能出色,逼抢积极,攻防转换速度快。'
},
{
id: 'netherlands',
name: '荷兰',
name_en: 'Netherlands',
nickname: '橙衣军团',
group: 'I',
flag: '🇳🇱',
confederation: 'UEFA',
fifa_ranking: 5,
best_result: '亚军(1974、1978、2010',
coach: '罗纳德·科曼',
style: '重视阵型宽度和传控推进,后场出球能力强,边中结合成熟。'
},
{
id: 'serbia',
name: '塞尔维亚',
name_en: 'Serbia',
nickname: '巴尔干雄鹰',
group: 'I',
flag: '🇷🇸',
confederation: 'UEFA',
fifa_ranking: 34,
best_result: '第四名(1930、1962,南斯拉夫时期)',
coach: '德拉甘·斯托伊科维奇',
style: '身材高大,中锋和定位球威胁突出,进攻端直接性强。'
},
{
id: 'algeria',
name: '阿尔及利亚',
name_en: 'Algeria',
nickname: '沙漠之狐',
group: 'I',
flag: '🇩🇿',
confederation: 'CAF',
fifa_ranking: 36,
best_result: '十六强(2014',
coach: '弗拉基米尔·佩特科维奇',
style: '边路个人能力强,反击速度快,前场技术型球员多。'
},
{
id: 'paraguay',
name: '巴拉圭',
name_en: 'Paraguay',
nickname: '南美白衣军团',
group: 'I',
flag: '🇵🇾',
confederation: 'CONMEBOL',
fifa_ranking: 39,
best_result: '八强(2010',
coach: '古斯塔沃·阿尔法罗',
style: '防守硬朗,阵型紧凑,善于通过定位球和反击制造威胁。'
},
{
id: 'italy',
name: '意大利',
name_en: 'Italy',
nickname: '蓝衣军团',
group: 'J',
flag: '🇮🇹',
confederation: 'UEFA',
fifa_ranking: 16,
best_result: '冠军(1934、1938、1982、2006',
coach: '詹纳罗·加图索',
style: '战术纪律强,防守传统深厚,强调中场控制和攻守平衡。'
},
{
id: 'egypt',
name: '埃及',
name_en: 'Egypt',
nickname: '法老军团',
group: 'J',
flag: '🇪🇬',
confederation: 'CAF',
fifa_ranking: 32,
best_result: '小组赛(1934、1990、2018',
coach: '霍萨姆·哈桑',
style: '边路进攻突出,反击依赖核心球员爆点,整体防守较务实。'
},
{
id: 'nigeria',
name: '尼日利亚',
name_en: 'Nigeria',
nickname: '非洲雄鹰',
group: 'J',
flag: '🇳🇬',
confederation: 'CAF',
fifa_ranking: 44,
best_result: '十六强(1994、1998、2014',
coach: '埃里克·谢勒',
style: '速度和力量优势明显,前场冲击力强,转换进攻威胁大。'
},
{
id: 'honduras',
name: '洪都拉斯',
name_en: 'Honduras',
nickname: '加勒比蓝白军团',
group: 'J',
flag: '🇭🇳',
confederation: 'CONCACAF',
fifa_ranking: 76,
best_result: '小组赛(1982、2010、2014',
coach: '雷纳尔多·鲁埃达',
style: '对抗积极,节奏直接,擅长通过边路冲击和定位球争取机会。'
},
{
id: 'czechia',
name: '捷克',
name_en: 'Czechia',
nickname: '东欧铁骑',
group: 'K',
flag: '🇨🇿',
confederation: 'UEFA',
fifa_ranking: 35,
best_result: '亚军(1934、1962,捷克斯洛伐克时期)',
coach: '伊万·哈谢克',
style: '身体对抗强,攻防节奏稳,定位球和中路冲击有传统优势。'
},
{
id: 'turkiye',
name: '土耳其',
name_en: 'Turkiye',
nickname: '星月军团',
group: 'K',
flag: '🇹🇷',
confederation: 'UEFA',
fifa_ranking: 26,
best_result: '季军(2002',
coach: '文琴佐·蒙特拉',
style: '比赛情绪和强度高,前场敢压迫,边路和远射威胁明显。'
},
{
id: 'chile',
name: '智利',
name_en: 'Chile',
nickname: '南美红魔',
group: 'K',
flag: '🇨🇱',
confederation: 'CONMEBOL',
fifa_ranking: 52,
best_result: '季军(1962',
coach: '尼古拉斯·科尔多瓦',
style: '拼抢凶狠,节奏直接,重视中前场压迫和快速推进。'
},
{
id: 'china',
name: '中国',
name_en: 'China PR',
nickname: '国足',
group: 'K',
flag: '🇨🇳',
confederation: 'AFC',
fifa_ranking: 94,
best_result: '小组赛(2002',
coach: '布兰科·伊万科维奇',
style: '打法偏务实,强调防守落位和边路推进,定位球是重要进攻手段。'
},
{
id: 'austria',
name: '奥地利',
name_en: 'Austria',
nickname: '奥地利雄鹰',
group: 'L',
flag: '🇦🇹',
confederation: 'UEFA',
fifa_ranking: 22,
best_result: '季军(1954',
coach: '拉尔夫·朗尼克',
style: '高位压迫鲜明,转换速度快,整体跑动和逼抢强度高。'
},
{
id: 'scotland',
name: '苏格兰',
name_en: 'Scotland',
nickname: '风笛军团',
group: 'L',
flag: '\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}',
confederation: 'UEFA',
fifa_ranking: 43,
best_result: '小组赛(多届)',
coach: '史蒂夫·克拉克',
style: '作风硬朗,边路传中和身体对抗突出,团队执行力稳定。'
},
{
id: 'jamaica',
name: '牙买加',
name_en: 'Jamaica',
nickname: '雷鬼男孩',
group: 'L',
flag: '🇯🇲',
confederation: 'CONCACAF',
fifa_ranking: 70,
best_result: '小组赛(1998',
coach: '史蒂夫·麦克拉伦',
style: '速度天赋突出,反击冲击强,依靠边路爆发力制造机会。'
},
{
id: 'qatar',
name: '卡塔尔',
name_en: 'Qatar',
nickname: '西亚红狐',
group: 'L',
flag: '🇶🇦',
confederation: 'AFC',
fifa_ranking: 53,
best_result: '小组赛(2022',
coach: '胡伦·洛佩特吉',
style: '短传配合熟练,节奏控制意识强,擅长通过中路渗透组织进攻。'
}
]
export default teams