为何访问JavaScript对象属性值得到单个字母?如何修复?
JavaScript代码问题分析及修复
问题原因
这段代码的核心问题是误用了Object.values()方法:
- 循环里的
game[team]其实已经直接取到了game对象里的球队名称字符串(比如game['team1']就是"Bayern Munich")。 - 但
Object.values()是用来提取对象的属性值数组的,当传入字符串时,JS会把字符串当成类数组对象处理,把每个字符拆成单独的数组元素,控制台输出时数组会被自动转成逗号分隔的格式,于是就出现了球队名称被拆成单个字母的情况。
修复方法
完全不需要使用Object.values(),直接调用game[team]就能拿到完整的球队名称字符串——因为team变量对应的就是game对象里的team1/team2属性名,直接取值即可。
修复后的代码
const game = { team1: "Bayern Munich", team2: "Borrussia Dortmund", odds: { team1: 1.33, team2: 6.5, }, }; for (const [team, odd] of Object.entries(game.odds)) { console.log(`Odd of victory ${game[team]}: ${odd}`); }
修复后的控制台输出
Odd of victory Bayern Munich: 1.33 Odd of victory Borrussia Dortmund: 6.5
内容的提问来源于stack exchange,提问作者Yara Laboud
相关产品推荐
相关产品推荐

