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

如何修复for循环统计对象内多数组中'cat'总数的代码错误?

问题分析与解决

你的代码核心问题是遍历对象时搞错了操作对象:
在for (const tutor in tutorPetTypes)循环里,tutor是对象的键(也就是导师的名字字符串,比如'Sarah'),但你内层循环却在遍历这个名字的字符长度,自然永远匹配不到"cat",导致totalCats始终为0。

修正后的代码

const tutorPetTypes = {
  'Sarah': ['cat'],
  'Jim': ['dog', 'dog'],
  'Joe': ['mouse'],
  'Róisín': ['cat','cat','cat','cat','cat','dog'],
  'Edd': ['lizard', 'cat'],
  'Lewis': ['bearded dragon', 'tortoise']
}

let totalCats = 0

for (const tutor in tutorPetTypes) {
  // 先获取当前导师对应的宠物数组
  const petList = tutorPetTypes[tutor];
  // 遍历宠物数组,而不是导师名字的字符
  for (let i = 0; i < petList.length; i++) {
      if (petList[i] === "cat") {
          totalCats++;
      }
  }
};

console.log(totalCats); // 输出7

关键修正点

  • 新增const petList = tutorPetTypes[tutor]:通过对象的键(导师名字)拿到对应的宠物数组,这才是你需要遍历的目标
  • 内层循环的长度判断改为petList.length:遍历宠物数组的元素,而非导师名字的字符
  • 条件判断改为petList[i] === "cat":检查数组中的每个宠物类型是否为猫

额外优化思路(可选)

如果不想用嵌套for循环,也可以用Object.values配合forEach简化代码,结果一致:

let totalCats = 0;
Object.values(tutorPetTypes).forEach(pets => {
  pets.forEach(pet => {
    if (pet === 'cat') totalCats++;
  });
});

内容的提问来源于stack exchange,提问作者Zac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:33:18