2016-04-26 16 views
0

ich ein Javacript Objekt habe (im Grunde, Daten von WebAPI kommenden Anruf) in folgendem Format:Javascript/AngularJS Auswahl Objekt basierend auf dem Ausdruck als Schlüssel

$scope.Muncipalties = { 
    "2290_BR1": "ABBOTTSTOWN", 
    "2290_BR2": "ARENDTSVILLE", 
    "2290_BR3": "BENDERSVILLE", 
    "2290_TS01": "BERWICK TWP", 
    "2290_BR4": "BIGLERVILLE", 
    "2290_BR5": "BONNEAUVILLE", 
    "2290_TS02": "BUTLER TWP", 
    "2290_BR6": "CARROLL VALLEY", 
    "2290_TS3": "CONEWAGO TWP", 
    "2291_TS4": "CUMBERLAND TWP", 
    "2291_BR7": "EAST BERLIN", 
    "2291_BR8": "FAIRFIELD", 
    "2291_TS5": "FRANKLIN TWP", 
    "2291_TS6": "FREEDOM TWP"}; 

Nun, ich brauche von oben einem anderen Objekt zu erstellen, Es sollte jedoch nach Teilschlüsselwert gefiltert werden. d.h., der Schlüssel ist 2290, dann sollten nur die Datensätze kopiert werden, die den Schlüssel "2290_" haben. Wenn der Schlüssel 2291 ist, sollten nur die letzten 5 Datensätze kopiert werden.

Gibt es eine Möglichkeit in AngulaJS Filter dies zu tun?

Plunker ist hier: https://plnkr.co/edit/OmKHwF1fx1tUVVXYtogp?p=preview

+0

das ist kein Array – JordanHendrix

Antwort

2

Keine Notwendigkeit für Winkel hier, das ist kein Array sein ein Objekt, das tun ein anderes Objekt zu machen:

JsBin example

Hier gehen Sie:

var obj = {}; 

for (var prop in m) { 
    if (prop.indexOf('2290') > -1) { 
    obj[prop] = m[prop]; 
    } 
} 
+1

Ein Wort: Perfect !! – TechTurtle

+0

danke! freue mich zu helfen! – JordanHendrix

0

Wie wäre es mit dem folgenden Code?

JS:

$scope.filterId = function(id, items) { 
    var result = {}; 
    angular.forEach(items, function(value, key) { 
     if (key.match(id) ) { 
     result[key] = value; 
     } 
    }); 
    return result; 
}; 

HTML:

<div ng-repeat="(k,v) in filterId(2290, Muncipalties)"> 
    {{v}} 
</div> 
Verwandte Themen