2016-12-14 9 views
0

Ich habe den folgenden Filter in angular.js erstellt. Jetzt versuche ich, die indexOf zu verwenden, um das Land durch variable Spleiß zu entfernen erhalte ich immer die Fehlermeldung, dass _filters.indexOf ist keine Funktion:indexOf funktioniert nicht in AngularJS Filter

.filter('MyFilter', function() { 
    return function (_filters) { 
     _filters = _filters.splice(_filters.indexOf(_filters['country']), 1); 
    } 
}) 

Das Filterobjekt sieht wie folgt aus:

{ 
    "rate": 5, 
    "country": [ 
    "Russia", 
    "Polen", 
    "France" 
    ], 
    "city": [ 
    "Dubai" 
    ] 
} 
+3

Splice auf Arrays verwendet werden: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ Array/indexO f keine Objekte. – rrd

+2

^gleich für 'indexOf'. – Cerbrus

+0

ja! Splice und indexOf werden in Arrays verwendet, wenn Sie versuchen, das Land aus dem Objekt zu entfernen. Delete _filters.country; –

Antwort

2

diesen Code verwenden, um entfernen Sie die country Eigenschaft von Ihrem Filter: ist

delete obj["country"]; 
+0

[Warum sollten Sie 'delete' nicht verwenden] (http://stackoverflow.com/a/21735614/4927984) – Mistalis

+0

@Mistalis: also, stattdessen Sie nur" halb "-Delete es? '= undefined' entfernt den Schlüssel nicht vom Objekt. – Cerbrus

+0

'löschen' ist wirklich langsam (** wirklich **). 'obj.prop = undefined'" halb löscht "eine Eigenschaft, ist aber viel schneller. – Mistalis

Verwandte Themen