2016-12-14 50 views
0

我已經在angular.js中創建了以下過濾器。現在我想使用indexOf通過拼接除去國可變我總是得到錯誤說_filters.indexOf不是一個函數:indexOf不能在AngularJS過濾器中工作

.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/磁盤陣列/ indexO f不是物體。 – rrd

+2

^與'indexOf'相同。 – Cerbrus

+0

是的! Splice和indexOf將用於數組,如果你想從對象中刪除國家,請使用delete _filters.country; –

回答

2

使用此代碼從您的過濾器中刪除country屬性:

delete obj["country"]; 
+0

[爲什麼你不應該使用'刪除'](http://stackoverflow.com/a/21735614/4927984) – Mistalis

+0

@Mistalis:所以,而你只有「一半」 - 刪除它? '= undefined'不會從對象中刪除密鑰。 – Cerbrus

+0

'delete'確實很慢(**真**)。 'obj.prop = undefined'「半刪除」一個屬性,但速度更快。 – Mistalis