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

如何使用Lodash查找值数组包含指定元素的对象键?

解决Lodash筛选值数组包含指定元素的键的问题

嘿,我明白你遇到的问题啦~你之前的写法没生效,是因为_.pickBy里的回调函数参数e对应的是每个键的数组值,而不是单个元素,直接用e == 'javascript'是把整个数组和字符串做比较,当然匹配不上啦!

我们需要检查这个数组里是否包含目标字符串"javascript",用Lodash的_.includes方法就能轻松搞定。下面是正确的写法:

const map = { 
  "John": ["math", "physics", "chem"], 
  "Lisa": ["bio", "chem", "history"], 
  "Emily": ["math", "history", "javascript"] 
};

// 正确的实现
const targetKeys = _.keys(_.pickBy(map, (arr) => _.includes(arr, 'javascript')));
console.log(targetKeys); // 输出: ["Emily"]

简单解释一下逻辑:

  1. _.pickBy(map, 回调函数):遍历对象的每一组键值对,只保留回调返回true的键值对。这里我们用_.includes(arr, 'javascript')判断当前数组是否包含目标字符串。
  2. _.keys(...):从筛选后的对象中提取所有键,得到我们想要的结果数组。

如果你喜欢更简洁的写法,也可以这样写:

const targetKeys = _.filter(_.keys(map), key => _.includes(map[key], 'javascript'));

这个思路是先拿到所有键,再筛选出对应值数组包含目标元素的键,结果是一样的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:26:12