store 中的 vuex 过滤器对象

vuex filter object in store

我的 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 过滤的函数,但它 returns 一个对象数组。

function getCreditId(obj, key, val) {
   return Object.values(obj).filter(x => x[key] === val);
}

我想通过数据[creditid] 过滤状态,这样我就不会创建另一个对象。但不确定如何在执行过滤器时绕过每个对象 ['yyyy'、'aaaa'] 的键。有什么建议吗?

解决它的一种方法是使用 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;
}, []);