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

JSChallenger对象属性存在判断问题:本地输出正常但平台不通过

JSChallenger 判断对象属性存在练习不通过问题解决

你的代码在VS Code里看起来输出正确,但平台不通过的核心问题是返回值类型错误:你返回的是字符串'true'/'false',但题目要求返回布尔值true/false。VS Code的console.log会把字符串和布尔值的打印结果显示得很像,但平台的测试用例是严格校验返回值类型的,字符串和布尔值属于不同类型,自然无法通过。

错误代码分析

你的代码里三元表达式返回的是带引号的字符串:

return (Object.keys(a).includes(b))? 'true' : 'false';

即便Object.keys(a).includes(b)本身返回的是布尔值,你却把它转换成了字符串,这就违反了题目的返回值要求。

修正方案1:直接返回布尔值

既然includes方法本身就返回布尔值,完全不需要三元表达式,直接返回结果即可:

function myFunction(a, b) {
  return Object.keys(a).includes(b);
}

修正方案2:使用更合适的in操作符

判断对象属性是否存在,JavaScript有更直接、高效的方法——in操作符,它专门用于检查属性是否存在于对象(包括原型链),完美适配题目中属性值为undefined的场景:

function myFunction(a, b) {
  return b in a;
}

如果题目要求仅检查对象自身的属性(排除原型链上的属性),可以改用hasOwnProperty方法:

function myFunction(a, b) {
  return a.hasOwnProperty(b);
}

测试验证

三个测试用例的验证结果:

  • myFunction({a:1, b:2, c:3}, 'b') → 返回true,符合要求
  • myFunction({x:'a', y:'b', z:'c'}, 'a') → 返回false,符合要求
  • myFunction({x:'a', y:'b', z:undefined}, 'z') → 返回true,符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:19:22