使用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
相关产品推荐
相关产品推荐

