Javascript 在对象中搜索字符串并形成对象数组

Javascript 在对象中搜索字符串并形成对象数组,javascript,lodash,Javascript,Lodash,我需要在一个对象中搜索字符串并形成一个对象数组 key = { ID: '1', NAME: 'KEN', DEPT1: 'CSE', DEPT2: 'IT', DEPT3: 'NA', EMAIL: 'E@T.com' } 输出: [{"DEPT1":"CSE"},{"DEPT2":"IT"}] 尝试了这个,但它给出了未定义的 var search = arr.push(_.findKey(key, _.curry(_.eq, 'CSE'))); console.

我需要在一个对象中搜索字符串并形成一个对象数组

key = {
  ID: '1',
  NAME: 'KEN',
  DEPT1: 'CSE',
  DEPT2: 'IT',
  DEPT3: 'NA',
  EMAIL: 'E@T.com'
}
输出:

[{"DEPT1":"CSE"},{"DEPT2":"IT"}]
尝试了这个,但它给出了未定义的

var search = arr.push(_.findKey(key, _.curry(_.eq, 'CSE')));

console.log(search)
例如:

var result=Object.entries(key).reduce((result,[key,val])=>{
如果(key.match(/dept[12]/i))结果[key]=val;
返回结果
},[])/[{“DEPT1”:“CSE”},{“DEPT2”:“IT”}]
试试这个:

搜索每个关键字:
函数搜索(关键字){
键={
ID:'1',
名字:“肯”,
部门1:“CSE”,
DEPT2:'它',
DEPT3:'不适用',
电邮:'E@T.com'
}
for(键中的常数k){
if(键[k]==关键字){
返回({
[k] :键[k]
})
}
}
返回空
}
console.log(搜索('CSE'))
let key={
“ID”:“1”,
“姓名”:“肯”,
“部门1”:“CSE”,
“DEPT2”:“IT”,
“DEPT3”:“NA”,
“电子邮件”:E@T.com"
}
让输出=[]
const findKey=(searchKey)=>{
Object.keys(key).forEach(key1=>{
键[key1]==搜索键?输出.push({
[key1]:键[key1]
}):null
})
}
芬德基(“CSE”)

console.log(输出)
使用lodash函数的最简单方法

const searchValues = Set('CSE', 'IT')
const arr = _.toPairs(obj).filter(([key, val]) => 
    searchValues.has(val)).map(([key, val]) => ({[key]: val}))

如果您只搜索“CSE”,那么这种输出的逻辑是什么?您想循环并搜索它,但即使CSE也不起作用。findKey搜索的是值内的键,而不是值本身,您应该使用其他一些函数