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

Lodash 3.10中_.find使用变量作为参数失效问题咨询

这不是Bug,是JavaScript语法特性导致的问题

你遇到的这个情况完全不属于Lodash的Bug,根源在于ES5及更早版本的JavaScript对象字面量语法限制:当你在对象字面量里写{prop: 值}时,这里的prop会被当作字符串字面量"prop"来处理,而不是读取变量prop的值。所以你的第一个_.find调用其实是在数组里找键名为"prop"的元素,自然找不到结果。

解决方法有这几种:

1. 先构建查询对象(ES5兼容,适合Lodash 3.x)

先创建一个空对象,再通过方括号语法把变量作为键名赋值:

var arr=[ 
{ 
"RHID||'-'||NOME": "3313-Abilio Dias Fernandes", 
"VAL": "CMIP@3313@1987-01-05", 
"OTHERVALUES": "400@1900-01-01@200@1900-01-01" 
}, 
];
var prop="RHID||'-'||NOME";

// 先构建查询对象
var queryObj = {};
queryObj[prop] = "3313-Abilio Dias Fernandes";

console.log(_.find(arr, queryObj)); // 现在能正常找到目标元素

2. 使用回调函数形式(更灵活,兼容性好)

直接给_.find传一个回调函数,手动判断属性值:

var arr=[ 
{ 
"RHID||'-'||NOME": "3313-Abilio Dias Fernandes", 
"VAL": "CMIP@3313@1987-01-05", 
"OTHERVALUES": "400@1900-01-01@200@1900-01-01" 
}, 
];
var prop="RHID||'-'||NOME";

console.log(_.find(arr, function(item) {
  return item[prop] === "3313-Abilio Dias Fernandes";
}));

3. 若环境支持ES6+,用计算属性名

如果你的运行环境支持ES6语法,可以直接在对象字面量里用方括号包裹变量作为键名:

var arr=[ 
{ 
"RHID||'-'||NOME": "3313-Abilio Dias Fernandes", 
"VAL": "CMIP@3313@1987-01-05", 
"OTHERVALUES": "400@1900-01-01@200@1900-01-01" 
}, 
];
var prop="RHID||'-'||NOME";

console.log(_.find(arr, {[prop]: "3313-Abilio Dias Fernandes"}));

因为你用的是Lodash 3.10版本,这个版本主要面向ES5环境,所以前两种方法会更稳妥。

内容的提问来源于stack exchange,提问作者Leonel Matias Domingos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:15:33