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

如何在JavaScript的for..in循环中添加筛选条件,仅输出指定值的属性

代码错误原因说明

你编写的代码存在两个核心问题:

  • 语法层面误用了for...in的结构:for...in语句中in关键字后必须填写要遍历的目标对象,你填写的object.c == 3是布尔运算表达式,运行后会得到布尔值true,而非你要遍历的object对象。
  • 筛选逻辑位置错误:属性值的匹配判断需要放在循环体内部,每遍历到一个属性时再校验对应值是否符合要求,不能写在in关键字的后方。

异常运行原因解释

JS执行for (const property in object.c == 3)时,会先运算object.c ==3得到结果true,再尝试遍历布尔值true。布尔值属于原始类型,JS会自动将其转为对应的布尔包装对象,该对象没有可枚举的自有属性,所以循环体一次都不会执行,自然没有符合预期的输出。

修正后代码

const object = { a: 1, b: 2, c: 3 };

for (const property in object) {
  // 仅属性值为3时执行打印
  if (object[property] === 3) {
    console.log(`${property}: ${object[property]}`);
  }
}

小提示:如果要避免遍历到对象继承的原型属性,可以在判断里额外加上object.hasOwnProperty(property)的校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:03