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

JavaScript数组与对象问题求助:筛选分数大于4的雇主姓名

问题分析
  • 错误包装输入数组:函数内let List = [employers];把传入的雇主数组又嵌套进了一个新数组,导致List变成二维数组,循环无法遍历到单个雇主对象;而且此处错误使用了全局变量employers,而非函数参数employerList。
  • 条件判断逻辑错误:if(List['score'] > 4 )中,List是数组,不存在score属性;即使修正数组包装,也应该访问循环当前元素的score,而非数组本身的属性。
  • 返回逻辑不符合需求:return List[i].name会在第一次循环就终止函数并返回值,即使逻辑正确,也只能返回第一个符合条件的姓名,无法获取所有符合要求的结果;若没有符合条件的对象,函数会返回undefined。
解决指导

基础循环版修正代码

const employers = [
  { name: "Adam", score: 5 },
  { name: "Jane", score: 3 },
  { name: "Lucas", score: 3 },
  { name: "Francesca", score: 2 },
  { name: "Mason", score: 4 }
]

function getQualifiedEmployers(employerList) {
  const qualifiedNames = [];
  
  for (let i = 0; i < employerList.length; i++) {
    const currentEmployer = employerList[i];
    if (currentEmployer.score > 4) {
      qualifiedNames.push(currentEmployer.name);
    }
  }
  
  return qualifiedNames;
}

console.log(getQualifiedEmployers(employers))

修正要点说明

  1. 直接使用函数参数employerList,避免错误嵌套数组,确保遍历的是单个雇主对象。
  2. 循环中取出当前雇主对象,正确访问其score属性进行条件判断。
  3. 用数组qualifiedNames收集所有符合条件的姓名,循环结束后统一返回,保证能获取全部结果。
  4. 函数命名更贴合功能,getQualifiedEmployers明确表示返回符合条件的雇主列表。

简洁数组方法版(进阶)

对于JavaScript数组,还可以使用filter和map组合实现更简洁的代码,这也是日常开发中常用的写法:

const employers = [
  { name: "Adam", score: 5 },
  { name: "Jane", score: 3 },
  { name: "Lucas", score: 3 },
  { name: "Francesca", score: 2 },
  { name: "Mason", score: 4 }
]

function getQualifiedEmployers(employerList) {
  return employerList
    .filter(employer => employer.score > 4)
    .map(employer => employer.name);
}

console.log(getQualifiedEmployers(employers))

进阶代码说明

  • filter方法:遍历数组,返回所有满足score > 4条件的雇主对象组成的新数组。
  • map方法:将筛选后的每个雇主对象转换为其name属性,最终得到符合条件的姓名数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:45:23