我有一个Vuex状态的对象对象,我正在尝试过滤以更新UI。我无法通过对象中的某个属性过滤对象。我试图避免创建一个临时对象来保存过滤后的数据。
这是我的数据对象:
var data = {
'xxxxx' : {
id: 'xxxxx',
assessed_value: 1900,
creditid: 'zzzzz',
full_value: 100,
population: 200
},
'yyyy' : {
id: 'yyyy',
assessed_value: 2000,
creditid: 'pppp',
full_value: 300,
population: 400
},
'aaaa' : {
id: 'aaaa',
assessed_value: 5000,
creditid: 'pppp',
full_value: 100,
population: 600
}
};
我想通过creditid过滤。例如,我想使用creditid ===' pppp'来检索州内的所有对象。
我创建了一个按creditid过滤的函数,但它返回了一个对象数组。
function getCreditId(obj, key, val) {
return Object.values(obj).filter(x => x[key] === val);
}
我想通过数据[creditid]过滤状态,这样我就不会创建另一个对象了。但是在做过滤器时,不确定如何绕过每个对象的键[' yyyy' aaaa']。有什么建议吗?
答案 0 :(得分:0)
解决这个问题的一种方法是使用reduce
函数。
var attribute = 'creditid';
var value = 'pppp';
var keys = Object.keys(data);
var result = keys.reduce(function(a, k) {
if (data[k][attribute] === value) {
a.push(data[k]);
}
return a;
}, []);