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

如何使用Lodash根据ID查找对象?解决代码返回undefined问题

解决Lodash _.find返回undefined的问题

嘿,我发现你在使用Lodash的_.find方法时遇到了返回undefined的问题,这是因为调用方法的参数格式和细节上出了几个小问题,我来帮你梳理下:

你原来代码的问题点:

  • 第一个参数应该是你的数组objects,但你写的是object(少了个s,变成了未定义的变量);
  • _.find的第二个参数如果是字段名,需要用字符串包裹(你写的id会被当作变量而非字段名);
  • 你的数据里id是字符串类型的'11',但你传了数字11,类型不匹配会导致匹配失败;
  • 另外,_.find的参数顺序虽然支持_.find(collection, path, value),但前提是前面的参数要正确。

几种正确的写法:

写法1:对象匹配(最直观)

直接传入一个匹配条件对象,Lodash会自动匹配对应属性:

const targetObj = _.find(objects, { id: '11' });

写法2:迭代函数匹配(灵活性更高)

如果需要更复杂的匹配逻辑,可以传入一个自定义函数:

const targetObj = _.find(objects, (obj) => obj.id === '11');

写法3:属性路径+值的简写(注意细节)

如果想用你最初的参数形式,需要修正字段名和值的类型:

const targetObj = _.find(objects, 'id', '11');

完整示例代码:

const objects = [ 
  { id: '11', name: 'ron', surname: 'lesner', group: 'A' }, 
  { id: '12', name: 'don', surname: 'lesner', group: 'B' }, 
  { id: '13', name: 'ton', surname: 'lesner', group: 'A' }, 
];

// 任意一种写法都能得到你想要的结果
const result = _.find(objects, { id: '11' });
console.log(result); 
// 输出:{ id: '11', name: 'ron', surname: 'lesner', group: 'A' }

只要修正这些细节,就能正确匹配到目标对象啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:35:44