将嵌套的对象值替换为具有不同结构的单独对象



我有一个NBA球队名称的对象,其结构如下:

const HomeAndAwayTeams =
{
teams: {
'0': { hTeam: 'San Antonio', AwTeam: 'New Orleans' },
'2': { hTeam: 'Sacramento', AwTeam: 'Orlando' 
},
'4': { hTeam: 'Indiana', AwTeam: 'Toronto' }, 
'6': { hTeam: 'Chicago', AwTeam: 'Cleveland' },
'8': { hTeam: 'Brooklyn', AwTeam: 'Miami' },  
'10': { hTeam: 'Milwaukee', AwTeam: 'Memphis' 
},
'12': { hTeam: 'Oklahoma City', AwTeam: 'Denver' },
'14': { hTeam: 'Houston', AwTeam: 'Portland' }  }
}

我想用他们各自的球队昵称来代替城市名称。

我有一个对象设置,以它们的昵称作为值,以城市名称作为键。

const NBATeamsNickNames = {
"Atlanta": "Hawks",
"Boston": "Celtics",
"Brooklyn": "Nets",
"Charlotte": "Hornets",
"Chicago": "Bulls",
"Cleveland": "Cavaliers",
"Dallas": "Mavericks",
"Denver": "Nuggets",
"Detroit": "Pistons",
"Golden State": "Warriors",
"Houston": "Rockets",
"Indiana": "Pacers",
"LA": "Clippers",
"Los Angeles": "Lakers",
"Memphis": "Grizzlies",
"Miami": "Heat",
"Milwaukee": "Bucks",
"Minnesota": "Timberwolves",
"New Orleans": "Pelicans",
"New York": "Knicks",
"Oklahoma City": "Thunder",
"Orlando": "Magic",
"Philadelphia": "76ers",
"Phoenix": "Suns",
"Portland": "Trailblazers",
"Sacramento": "Kings",
"San Antonio": "Spurs",
"Toronto": "Raptors",
"Utah": "Jazz",
"Washington": "Wizards"                     
}

我已经尝试了几种方法来替换这些值,但如果它是嵌套的,我不知道如何访问它。

例如,我尝试过这样的东西:

for (const key in NBATeamsNickNames) if (key in HomeAndAwayTeams) HomeAndAwayTeams = NBATeamsNickNames[key];

当然,只有当HomeAndAwayTeams中的对象值没有嵌套并且处于基本级别时,这才有效。

我尝试过一些其他方法,如for循环和映射,但我在迭代对象方面缺乏经验,尤其是在这种格式下,我正在尝试理解以这种方式访问数据背后的概念并在这种情况下替换。

HomeAndAwayTeams中的团队数量每天都会变化,不会是一个静态的数量。当然,对象中的团队每天都会发生变化

谢谢你的帮助。

我想您不需要对HomeAndAwayTeams对象进行迭代,您需要对HomeAndAwayTeams.teams进行迭代。您可以使用Object.keys方法来完成此操作。

这将在适当的位置更改对象。

const { teams } = HomeAndAwayTeams

for (const key of Object.keys(teams)) {
if (teams[key].hTeam in NBATeamsNickNames) {
teams[key].hTeam = NBATeamsNickNames[teams[key].hTeam]
}

if (teams[key].AwTeam in NBATeamsNickNames) {
teams[key].AwTeam = NBATeamsNickNames[teams[key].AwTeam]
}
}

最新更新