Lodash获取所有有关键的对象

我正在寻找有关键的过滤对象

这是我的对象

var mydevices= { "Object1": { "name": "name1", "category": "laptop" }, "Object2": { "name": "name2", "category": "laptop" }, "Object3": { "name": "name3", "category": "Desktop" }, "Object4": { "name": "name4", "category": "Mobile" } } 

和我的filter键是arrays

 var filterKeyArray=["Mobile","laptop"] 

我想从每个对象的类别应用filter。

所以filter将返回从filterKeyArray有一个键的对象。

build议一些帮助。

使用lodash,可以使用pickBy从对象中select属性,并使用includes函数来过滤不在数组中的值。 这将创build新的对象,不会更改原始对象。

 var mydevices = {"Object1":{"name":"name1","category":"laptop"},"Object2":{"name":"name2","category":"laptop"},"Object3":{"name":"name3","category":"Desktop"},"Object4":{"name":"name4","category":"Mobile"}} var filterKeyArray=["Mobile","laptop"] var result = _.pickBy(mydevices, e => _.includes(filterKeyArray, e.category)) console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script> 

使用Object.keys()Array#map迭代mydevices属性,并检查指定的元素是否具有filterKeyArray数组中提到的category值。

ES6解决scheme,不需要lodash

 var mydevices = {Object1:{name:"name1",category:"laptop"},Object2:{name:"name2",category:"laptop"},Object3:{name:"name3",category:"Desktop"},Object4:{name:"name4",category:"Mobile"}}, filterKeyArray = ["Mobile", "laptop"] Object.keys(mydevices).forEach(v => filterKeyArray.some(c => c == mydevices[v].category) ? null : delete mydevices[v]); console.log(mydevices);