Javascript 索引在AngularJS筛选器中不工作

Javascript 索引在AngularJS筛选器中不工作,javascript,angularjs,Javascript,Angularjs,我在angular.js中创建了以下过滤器。现在我尝试使用indexOf通过拼接删除country变量,我总是得到这样一个错误,即_filters.indexOf不是一个函数: .filter('MyFilter', function () { return function (_filters) { _filters = _filters.splice(_filters.indexOf(_filters['country']), 1); } }) 过滤器对象如

我在angular.js中创建了以下过滤器。现在我尝试使用indexOf通过拼接删除country变量,我总是得到这样一个错误,即_filters.indexOf不是一个函数:

.filter('MyFilter', function () {
    return function (_filters) {
        _filters = _filters.splice(_filters.indexOf(_filters['country']), 1);
    }
})
过滤器对象如下所示:

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

使用此代码可从筛选器中删除
国家/地区
属性:

delete obj["country"];

使用此代码可从筛选器中删除
国家/地区
属性:

delete obj["country"];

拼接用于阵列:非对象。^与
indexOf
相同。是!Splice和indexOf用于数组,如果要从对象中删除国家,请使用delete\u filters.country;你能展示一下你想如何使用这个过滤器吗?我不确定你是否理解过滤器的概念。@Hansmad:是的,我确实理解过滤器的概念。当然,发布的代码只是整个过滤器的摘录。有没有简单的方法将此对象转换为数组?可能通过使用第三方库,如UnderCre?Splice将用于阵列:而不是对象。^对于
indexOf
,相同。是的!Splice和indexOf用于数组,如果要从对象中删除国家,请使用delete\u filters.country;你能展示一下你想如何使用这个过滤器吗?我不确定你是否理解过滤器的概念。@Hansmad:是的,我确实理解过滤器的概念。当然,发布的代码只是整个过滤器的摘录。有没有简单的方法将此对象转换为数组?也许通过使用像UnderCre这样的第三方图书馆?@Mistalis:那么,你只是“一半”——删除它
=未定义
不会从对象中删除密钥。
删除
非常慢(非常慢)
obj.prop=undefined
“半删除”属性,但速度要快得多。@Mistalis:有多慢?如果我迭代10k个键,并将它们全部删除,与将未定义的键分配给所有键相比,我会注意到一个区别吗?这似乎是一个不成熟的优化,不考虑把钥匙放在那里有同样的性能影响。@ Mistalis,你真的阅读了你自己发布的链接吗?这个答案基本上符合问题,是一个干净的解决方案。@Mistalis:那么,你只需要“一半”——删除它
=未定义
不会从对象中删除密钥。
删除
非常慢(非常慢)
obj.prop=undefined
“半删除”属性,但速度要快得多。@Mistalis:有多慢?如果我迭代10k个键,并将它们全部删除,与将未定义的键分配给所有键相比,我会注意到一个区别吗?这似乎是一个不成熟的优化,不考虑把钥匙放在那里有同样的性能影响。@ Mistalis,你真的阅读了你自己发布的链接吗?这个答案基本上符合问题,是一个干净的解决方案。