Lodash使用索引访问器返回true而非实际数值问题求助
问题解决思路与方案
核心原因
你的问题本质是allUsers数组中存在不符合预期格式的用户条目,原find条件过于宽松,导致匹配到了结构异常的元素,进而出现索引3返回true的情况。
排查与验证
先在获取currentUser后打印完整数据,确认异常条目的结构:
let currentUser = _.chain(allUsers).find(o => o[0] == 'username').value(); console.log('当前用户完整结构:', currentUser);
你会发现部分currentUser并非预期的4元素数组——可能是数组长度不足、索引3被错误赋值为true,甚至是伪装成数组的对象。
解决方案
严格过滤合法条目
加强find的匹配条件,确保只返回符合格式的4元素数组:let currentUser = _.chain(allUsers) .find(o => Array.isArray(o) && o.length === 4 && o[0] === 'username') .value();- 用
Array.isArray(o)验证是数组类型 - 用
o.length === 4确保结构完整 - 用
===代替==避免隐式类型转换带来的误匹配
- 用
增加容错处理
若无法避免异常数据,在获取最后登录时间时做兜底:const lastLoginTime = Array.isArray(currentUser) && currentUser.length >= 4 ? currentUser[3] : '无效的用户数据'; console.log(lastLoginTime);
内容的提问来源于stack exchange,提问作者asajadi84
相关产品推荐
相关产品推荐

