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

如何从JS对象中按搜索值获取对应键值,及遍历匹配异常问题排查

问题分析
  • 核心错误是遍历逻辑设计错误:Object.entries(map)会把所有键值对拆成数组逐个遍历,你给每一次遍历都加了二选一的输出逻辑,只要匹配到某一个键值对时,其他没匹配到的键值对都会触发not found输出。比如你配置了2个关键词,输入存在的关键词时,就会输出1条对应URL+1条not found,配置了N个关键词就会输出N-1条多余的not found。
  • 额外注意:这里不需要用map方法,map的作用是生成新数组,你只是要做匹配查找,属于方法误用。
修复代码

你可以直接用find方法先查找匹配项,再统一做输出判断,性能和逻辑都更合理:

$(document).ready(function(){
  $("#searchKeywords").on("keypress", function(e){
    if(e.which == 13){   
      const map = {
        "home" : "/homepage",
        "about" : "/about-us"
      }
      const searchVal = $("#searchKeywords").val().trim()
      // 查找匹配的键值对
      const matchedItem = Object.entries(map).find(([keyword]) => keyword === searchVal)
      if(matchedItem){
        console.log(matchedItem[1])
        window.location.href = matchedItem[1]
      }else{
        console.log('not found')
      }
    }
  });
})

补充说明:你最开始直接通过对象属性访问的写法性能更好,不需要遍历所有键值对,除非你后续要做模糊匹配等特殊逻辑,否则没必要改用遍历的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:04