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

JSON数组查找员工对象时重复输出‘未找到’的问题排查

问题原因
  • 你用了map方法遍历数组,map的特性是迭代数组里的每一个元素并执行回调函数。当输入不存在的员工ID时,数组中的每个元素都会触发else分支,所以会打印两次"not found"。
  • map的设计目的是转换数组元素生成新数组,不是用来查找元素,这里属于方法误用。
修正方案

改用find方法,它会遍历数组直到找到第一个匹配的元素,找不到则返回undefined。这样只需在遍历结束后判断结果,就能保证"not found"只输出一次。

修正后的代码:

var E_ID

let empArray = [
 {
  "employee": {
    "employee_ID": 16,
    "employee_designation": "Node.js",
     "employee_FirstName": "John",
     "employee_lastName": "Doe"
  }
 },
 {
   "employee": {
    "employee_ID": 17,
    "employee_designation": "Full Stack",
    "employee_FirstName": "Samual",
    "employee_lastName": "Smith"
  }
 }
]

function search_EmployeeByID(E_ID) {
  const foundEmployee = empArray.find(item => item.employee.employee_ID === E_ID);
  
  if (foundEmployee) {
    console.log(foundEmployee.employee);
  } else {
    console.log("not found");
  }
}

E_ID = parseInt(prompt("Enter Employee_ID to search for:"))
search_EmployeeByID(E_ID);
额外优化点
  • 原代码中对象末尾有多余逗号(比如"employee_lastName": "Doe",),虽然多数浏览器兼容,但可能引发语法错误,建议删除。
  • 判断相等时使用===严格相等运算符,避免类型转换导致的意外问题。

内容的提问来源于stack exchange,提问作者Muhammad Sohaib 3837-FBASBSSEF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:05:30