存储中的vuex过滤器对象

时间:2017-09-09 14:20:56

标签: javascript object filter vuex

我有一个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']。有什么建议吗?

1 个答案:

答案 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;
}, []);