2017-09-09 14 views
0

UIを更新するためにフィルタリングしようとしているVuex状態のオブジェクトのオブジェクトがあります。オブジェクトのプロパティの1つでオブジェクトをフィルタリングする際に問題が発生しています。私はフィルタリングされたデータを保持するための一時的なオブジェクトを作成しないようにしようとしています。私は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でフィルタリングする関数を作成しましたが、オブジェクトの配列を返します。

データ[creditid]で状態をフィルタリングして、別のオブジェクトを作成しないようにしたいとします。しかし、フィルタを実行するときに各オブジェクト['yyyy'、 'aaaa']のキーをバイパスする方法がわかりません。助言がありますか?

答えて

0

これを解決する1つの方法は、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; 
}, []); 
関連する問題