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

FreeCodeCamp校验传入对象是否包含指定属性的实现问题求助

你的代码存在的问题

  • 逻辑方向完全颠倒:需求是主动校验指定的4个属性是否全部存在,但你的代码是遍历传入对象的已有属性,没有对齐校验目标。
  • 提前返回导致逻辑不完整:你的循环第一次执行就会触发return语句,仅校验到对象的第一个属性是否存在就直接结束函数,完全不会检查剩余3个要求的属性,自然无法通过缺省任意属性的测试用例。
  • 冗余判断+语法不完整:代码中的if (userObj)判断无实际意义,同时循环、条件判断的闭合括号缺失,存在语法漏洞。

调整建议

你可以直接参考官方的逐属性校验写法,也可以用循环逻辑实现更易扩展的版本,两种写法逻辑等价:

循环实现版本

function isEveryoneHere(userObj) {
  // 先定义需要校验的属性列表
  const requiredNames = ['Alan', 'Jeff', 'Ryan', 'Sarah']
  // 遍历校验每一个必填属性是否存在
  for (const name of requiredNames) {
    // 只要有一个不存在就直接返回false
    if (!userObj.hasOwnProperty(name)) {
      return false
    }
  }
  // 全部校验通过返回true
  return true
}

更简洁的数组方法版本

function isEveryoneHere(userObj) {
  return ['Alan', 'Jeff', 'Ryan', 'Sarah'].every(name => userObj.hasOwnProperty(name))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:27:04