能否像标准for循环一样嵌套for/in循环?语法问题求助
当然可以嵌套
for/in循环啦! 你遇到的问题其实是没区分数组遍历和对象属性遍历的小细节——你的games是一个数组,而for/in是用来遍历对象属性的,直接对数组用for/in拿到的是数组的索引(比如"0"),而不是里面的游戏对象,这就导致后续遍历属性时出错了。
正确的做法是先遍历数组里的每个游戏对象,再对每个对象嵌套for/in来遍历它的属性,给你写个能正常运行的示例:
var games = [{ "name": "PCH Mystery Game", "maxScore": 50000, "levels": 4, "players": ["akshat", "joe", "dan"] }]; // 先遍历数组中的每个游戏对象(用for循环更直观,也可以用for/of) for (let gameIndex = 0; gameIndex < games.length; gameIndex++) { const currentGame = games[gameIndex]; console.log(`=== 第 ${gameIndex + 1} 个游戏的属性 ===`); // 嵌套for/in遍历当前游戏对象的所有属性 for (const propName in currentGame) { // 加上hasOwnProperty检查,避免遍历到原型链上的额外属性(更规范) if (currentGame.hasOwnProperty(propName)) { console.log(`${propName}:`, currentGame[propName]); } } }
如果你想更简洁,也可以用for/of遍历数组(ES6+支持),代码会更清爽:
for (const game of games) { console.log("=== 游戏属性 ==="); for (const prop in game) { if (game.hasOwnProperty(prop)) { console.log(`${prop}:`, game[prop]); } } }
运行这段代码后,你就能看到每个游戏对象的所有属性和对应值了,包括players数组也会正常打印出来。
简单来说,只要先拿到数组里的单个游戏对象,再对这个对象用for/in嵌套遍历,完全可以实现你想要的效果,只是之前没处理好数组和对象的遍历步骤~
内容的提问来源于stack exchange,提问作者Peter Mingione
相关产品推荐
相关产品推荐

