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

JS如何编写函数从动物对象数组中按名称查找对应动物对象

现有代码的问题

  • 参数顺序错误:需求要求函数第一个参数是动物名称字符串,第二个是动物对象数组,你当前定义的参数顺序刚好相反
  • array.indexOf(string)逻辑错误:indexOf只能匹配数组中全等于传入值的元素,你的数组里存储的是对象,不可能和字符串全等,所以这个判断永远返回false
  • return string[animals]逻辑完全错误:string是传入的名称字符串,animals是未定义变量,既拿不到对应的动物对象,运行还会直接报错

正确实现

最简写法(ES6+支持)

直接用数组内置的find方法,会自动遍历数组返回第一个符合条件的元素,找不到就返回undefined,我们转成返回null即可:

// 第一个参数是要查找的动物名称,第二个是动物对象数组
function search(animalName, animalArray) {
  return animalArray.find(item => item.name === animalName) ?? null
}

如果运行环境不支持空值合并运算符??,可以改成兼容性更好的三元判断写法:

function search(animalName, animalArray) {
  const target = animalArray.find(function(item) {
    // 如果你对象里存储名称的属性叫“名称”,就把item.name改成item.名称
    return item.name === animalName
  })
  return target ? target : null
}

基础循环写法(更易理解底层逻辑)

function search(animalName, animalArray) {
  // 遍历数组中的每一个动物对象
  for (let i = 0; i < animalArray.length; i++) {
    const currentAnimal = animalArray[i]
    // 匹配当前对象的名称属性和传入的搜索名称
    if (currentAnimal.name === animalName) {
      // 匹配成功直接返回当前对象
      return currentAnimal
    }
  }
  // 遍历完所有元素都没匹配到,返回null
  return null
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:30:01