2017-09-09 4 views
0

Ich habe ein Objekt von Objekten in meinem Vuex-Zustand, den ich filtere, um die Benutzeroberfläche zu aktualisieren. Ich habe Probleme beim Filtern des Objekts durch eine der Eigenschaften im Objekt. Ich versuche zu vermeiden, ein temporäres Objekt zu erstellen, um die gefilterten Daten zu halten.Vuex Filterobjekt im Geschäft

Hier ist mein Datenobjekt:

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 
    } 
}; 

ich von creditid zu filtern versuchen. Zum Beispiel möchte ich alle Objekte in dem Zustand mit einer Kredit-ID === 'pppp' abrufen.

Ich habe eine Funktion erstellt, die nach Kredit-ID filtert, aber ein Array von Objekten zurückgibt.

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

Ich möchte den Zustand nach Daten [KreditID] filtern, so dass ich kein anderes Objekt erstellen. Aber nicht sicher, wie man die Tasten für jedes Objekt ['yyyy', 'aaaa'] umgeht, wenn man den Filter macht. Irgendwelche Vorschläge?

Antwort

0

Eine Möglichkeit, dies zu lösen, ist die Verwendung der reduce-Funktion.

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