Lodash:在其自己的数组中查找具有特定值的所有键

jsh*_*303 5 javascript lodash

我正在使用 lodash 对下面的数组执行以下任务:

let map = {
   "John": ["math", "physics", "chem"],
   "Lisa": ["bio", "chem", "history"],
   "Emily": ["math", "history", "javascript"];
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何使用 lodash 返回其数组中具有“javascript”值的键Emily

我正在使用

_.keys(_.pickBy(map, e => {
    return (e == 'javascript');
}))
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用

Nen*_*car 6

您可以使用findKeyincludes方法来查找密钥。

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

const result = _.findKey(map, e => _.includes(e, 'javascript'))
console.log(result)
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js"></script>
Run Code Online (Sandbox Code Playgroud)

要匹配 value 包含元素的多个键,您可以使用pickBy方法来过滤属性,然后获取键。

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

const result = _.keys(_.pickBy(map, e => _.includes(e, "javascript")))
console.log(result)
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
Run Code Online (Sandbox Code Playgroud)