我正在寻找一种通过密钥过滤对象的简短而有效的方法,我有这种数据结构:
{"Key1":[obj1,obj2,obj3], "Key2":[obj4,obj5,obj6]}
现在我想按键过滤,例如"Key1"
:
{"Key1":[obj1,obj2,obj3]}
答案 0 :(得分:2)
var object = {"Key1":[1,2,3], "Key2":[4,5,6]};
var key1 = object["Key1"];
console.log(key1);
答案 1 :(得分:1)
您可以将.filter
js函数用于对象内的过滤器值
var keys = {"Key1":[obj1,obj2,obj3], "Key2":[obj4,obj5,obj6]};
var objectToFind;
var keyToSearch = keys.filter(function(objects) {
return objects === objectToFind
});
keyToSearch
是一个数组,其中所有对象都按objectToFind
变量进行过滤。
请记住,在return objects === objectToFind
行中您应该发表自己的声明。我希望它可以帮到你。
答案 2 :(得分:0)
您可以使用Object.keys
和数组.reduce
方法的组合,根据某些自定义过滤条件创建新对象。请注意,这仅适用于es6:
var myObject = {"Key1":["a","b","c"], "Key2":["e","f","g"]}
function filterObjectByKey(obj, filterFunc) {
return Object.keys(obj).reduce((newObj, key) => {
if (filterFunc(key)) {
newObj[key] = obj[key];
}
return newObj;
}, {});
}
const filteredObj = filterObjectByKey(myObject, x => x === "Key1")
console.log(filteredObj)
答案 3 :(得分:0)
不确定您到底想要实现的目标,但如果您想拥有一组想要获取数据的密钥,那么您有很多选择,一个是:
var keys = ['alpha', 'bravo'];
var objectToFilterOn = {
alpha: 'a',
bravo: 'b',
charlie: 'c'
};
keys.forEach(function(key) {
console.log(objectToFilterOn[key]);
});