2016-12-14 3 views
0

Я создал следующий фильтр в angular.js. Теперь я пытаюсь использовать IndexOf удалить переменную страны путем сращивания я всегда получаю ошибку говоря _filters.indexOf не является функцией:indexOf не работает в AngularJS filter

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

Объект фильтра выглядит следующим образом:

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

сращивания для использования в массивах: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ Array/indexO f не объекты. – rrd

+2

^одинаковый для 'indexOf'. – Cerbrus

+0

да! Splice и indexOf должны использоваться на массивах, если вы пытаетесь удалить страну из объекта, используйте delete _filters.country; –

ответ

2

Используйте этот код, чтобы удалить country свойство от вашего фильтра:

delete obj["country"]; 
+0

[Почему вы не должны использовать 'delete'] (http://stackoverflow.com/a/21735614/4927984) – Mistalis

+0

@Mistalis: так, вместо этого вы только« наполовину »-отделите его? '= undefined' не удаляет ключ из объекта. – Cerbrus

+0

'delete' очень медленный (** действительно **). 'obj.prop = undefined'" half-delete "свойство, но быстрее. – Mistalis