Javascript 如何使用lodash筛选对象的关键帧?

Javascript 如何使用lodash筛选对象的关键帧?,javascript,filter,lodash,Javascript,Filter,Lodash,我有一个带有一些关键点的对象,我只想保留其中一些关键点的值 我尝试使用过滤器: const数据={ aaa:111, abb:222, bbb:333 }; const result=u.filter(数据,(值,键)=>key.startsWith(“a”); 控制台日志(结果) 只需将过滤器更改为 const data={aaa:111,abb:222,bbb:333}; 常量结果=uu.ommitby(数据,(值,键)=>!key.startsWith(“a”); 控制台日志(结果)

我有一个带有一些关键点的对象,我只想保留其中一些关键点的值

我尝试使用
过滤器

const数据={
aaa:111,
abb:222,
bbb:333
};
const result=u.filter(数据,(值,键)=>key.startsWith(“a”);
控制台日志(结果)
只需将过滤器更改为

const data={aaa:111,abb:222,bbb:333};
常量结果=uu.ommitby(数据,(值,键)=>!key.startsWith(“a”);
控制台日志(结果)
Lodash有一个功能,它可以完全满足您的需求

var-thing={
“a”:123,
“b”:456,
“abc”:6789
};
var result=u.pickBy(对象、函数(值、键){
返回(键“a”);
});
console.log(result.abc)//6789
console.log(result.b)//未定义

以下是使用
lodash
4.x的示例:

const数据={
aaa:111,
abb:222,
bbb:333
};
const result=u.pickBy(数据,(值,键)=>key.startsWith(“a”);
控制台日志(结果);
//对象{aaa:111,abb:222}


打开javascript控制台以查看输出。
一种非洛达斯的方法,可以以一种相当可读且高效的方式解决此问题:

function filterByKeys(对象,键=[]){
常量筛选={}
keys.forEach(key=>{
if(对象hasOwnProperty(键)){
过滤[键]=对象[键]
}
})
返回过滤
}
常量myObject={
答:1,,
b:‘香蕉’,
d:空
}
const result=filterByKeys(myObject,['a','d','e'])

console.log(result)/{a:1,d:null}
NativeES2019一行

const数据={
aaa:111,
abb:222,
bbb:333
};
const filteredByKey=Object.fromEntries(Object.entries(data.filter)([key,value])=>key.startsWith(“a”))
console.log(filteredByKey)
const数据={
aaa:111,
abb:222,
bbb:333
};
const result=Object.keys(data.filter((val)=>val.includes(“a”));

控制台日志(结果)这不是仍然打印数组吗?谢谢!我认为我们可以使用
.pick
这在最新的lodash版本中不再有效,只是FYIIt似乎在lodash版本4中被破坏了,并且新的u.pickBy谓词只使用value而不是key调用。Boo:(…我想你可以连锁u.pick和u.pickBy(事实上,你不能得到相同的功能)这不再适用于最新的Lodash,只是FYI@EudisDuran您必须使用
。pickBy
似乎已在最新版本中修复。这是一种过滤对象关键帧的非lodash方法,原始问题说明了一种使用lodash过滤对象关键帧的方法。