繁体   English   中英

JavaScript 或 Lodash 通过键查找对象

[英]JavaScript or Lodash find objects by key

在具有 diff 键的对象数组中,如何使用 ES6 或 Lodash 按键查找对象?

const arr = [{a:2}, {b:3}, {fred:10}]

我希望结果是:

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

我不想使用省略风格的方法。

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));

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

 var orgObject = [{ a: 2 }, { b: 3 }, { fred: 10 }]; function searchByKey(keyNames) { return orgObject.filter(function(item) { for (var keys in item) { if (keyNames.indexOf(keys) !== -1) { return item } } }) } console.log(searchByKey(['a', 'fred']))

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

_.filter(array, elem => elem.hasOwnProperty('a') || elem.hasOwnProperty('fred'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM