JavaScript或Lodash按键查找对象

JavaScript或Lodash按键查找对象,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,在具有不同关键点的对象数组中,如何使用ES6或Lodash按关键点查找对象 const arr = [{a:2}, {b:3}, {fred:10}] 我希望结果是: => [{a:2}, {fred:10}] 我不想使用省略样式的方法。基本上,您需要数组中具有字段a或fred的所有对象。过滤时,可以对对象使用hasOwnProperty() const filtered = arr.filter(obj => obj.hasOwnProperty("a") || obj.has

在具有不同关键点的对象数组中,如何使用ES6或Lodash按关键点查找对象

const arr = [{a:2}, {b:3}, {fred:10}]
我希望结果是:

=> [{a:2}, {fred:10}]

我不想使用省略样式的方法。

基本上,您需要数组中具有字段
a
fred
的所有对象。过滤时,可以对对象使用
hasOwnProperty()

const filtered = arr.filter(obj => obj.hasOwnProperty("a") || obj.hasOwnProperty("fred"));

// or, if you have dynamic / lots of keys:
const keys = ["a", "fred"];
const filtered = arr.filter(obj => keys.some(key => obj.hasOwnProperty(key));
_.filter(array, elem => elem.hasOwnProperty('a') || elem.hasOwnProperty('fred'));

过滤方法将是有用的。创建一个函数并传递一组
。内部过滤器功能检查键是否与参数数组匹配。如果通过,则返回该对象

var orgObject=[{
a:2
}, {
b:3
}, {
弗雷德:10
}];
函数searchByKey(键名){
返回orgObject.filter(函数(项){
for(项目中的变量键){
if(keyNames.indexOf(keys)!=-1){
退货项目
}
}
})
}

console.log(searchByKey(['a','fred'])
如何从
arr
到结果?这是问题不,这不是问题。你想按键查找对象,这就是问题所在。你的结果只是凭空而来。标准是什么?你是如何得到这个结果的?为什么你的结果
arr
没有中间元素?这个魔术的逻辑是什么?