Javascript 索引在AngularJS筛选器中不工作
我在angular.js中创建了以下过滤器。现在我尝试使用indexOf通过拼接删除country变量,我总是得到这样一个错误,即_filters.indexOf不是一个函数: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); } }) 过滤器对象如
.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,你真的阅读了你自己发布的链接吗?这个答案基本上符合问题,是一个干净的解决方案。