You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否像标准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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:43:03