2017-09-09 2 views
0

UI를 업데이트하기 위해 필터링하려고하는 Vuex 상태의 개체 개체가 있습니다. 개체의 속성 중 하나를 사용하여 개체를 필터링하는 데 문제가 있습니다. 필터링 된 데이터를 보관할 임시 개체를 만드는 것을 피하려고합니다. 내가 creditid으로 필터링하는 것을 시도하고있다저장소에있는 vuex 필터 개체

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 === 'pppp'를 가진 상태의 모든 객체를 검색하고 싶습니다.

creditid로 필터링하는 함수를 만들었지 만 객체 배열을 반환합니다.

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

다른 개체를 만들지 않도록 [creditid] 데이터로 상태를 필터링하고 싶습니다. 그러나 필터를 수행 할 때 각 객체 [ 'yyyy', 'aaaa']의 키를 무시하는 방법을 모릅니다. 어떤 제안?

답변

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