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

使用Lodash查找对象中指定键对应的值问题求助

解决方法:从对象中快速查找指定键的Value

哈哈,我太懂你踩的这个坑了!你用_.find没拿到结果完全正常——因为_.find是专门用来遍历数组找匹配项的,而你手里的participant是个普通对象,直接用它肯定不对呀~下面给你两种快速解决的方案:

ES6原生方法

这几种写法都不用额外依赖,原生JS就能搞定:

  • 最直接的属性访问:因为JS对象会自动把数字类型的键转换成字符串,所以两种写法都能拿到值:
    const value1 = participant['13'];
    const value2 = participant[13]; // 同样有效,JS会自动转成字符串键
    
  • 用Object.entries转数组后查找(适合需要额外条件判断的场景):
    把对象转成[键, 值]格式的数组,再用find匹配键,最后取对应的值:
    const targetEntry = Object.entries(participant).find(([key]) => key === '13');
    const value = targetEntry ? targetEntry[1] : undefined; // 或者用可选链简化
    // 简化版
    const value = Object.entries(participant).find(([key]) => key === '13')?.[1];
    

Lodash方法

用Lodash的话,专门处理对象取值的工具函数更顺手:

  • _.get(最推荐):不仅能直接取到值,还能在键不存在时返回默认值(可选),完全不用怕undefined:
    const value = _.get(participant, '13');
    // 如果想给默认值,比如键不存在时返回'默认值'
    const valueWithDefault = _.get(participant, '13', '默认值');
    
  • 先判断键存在再取值:用_.has检查键是否存在,再直接访问:
    if (_.has(participant, '13')) {
      const value = participant['13'];
      // 做你要的操作
    }
    

补充:为什么之前的_.find不行?

_.find遍历对象时,是遍历对象的value值,你传13作为匹配条件,它会去找哪个value等于13,而不是键等于13的项,自然返回undefined啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:28