2016-12-14 16 views
0

angular.jsで次のフィルタを作成しました。今私は、私はいつも_filters.indexOfは関数ではありませんというエラーを取得スプライスによって国の変数を削除するの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オブジェクトではありません。 – 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'は"半分削除 "しますが、速くなります。 – Mistalis

関連する問題