Javascript 自定义角度过滤器
我正在尝试过滤类似以下内容的数据:Javascript 自定义角度过滤器,javascript,angularjs,Javascript,Angularjs,我正在尝试过滤类似以下内容的数据: data = { ABC: "Lorem Ipsum lorem lorem", DEFG: "Lorem Ipsum lorem lorem", HI: "Lorem Ipsum lorem lorem", JK: "Lorem Ipsum lorem lorem" } 针对数组,例如: myArray = ["HI","LMN","ABC"] 我试图返回myArray 我尝试了以下方法,但没有成功: $scope.filteredRes
data = {
ABC: "Lorem Ipsum lorem lorem",
DEFG: "Lorem Ipsum lorem lorem",
HI: "Lorem Ipsum lorem lorem",
JK: "Lorem Ipsum lorem lorem"
}
针对数组,例如:
myArray = ["HI","LMN","ABC"]
我试图返回myArray
我尝试了以下方法,但没有成功:
$scope.filteredResults = $filter("filter")(data, function (val, index) {
for (var i = 0; i < myArray.length; i++) {
if (index === myArray[i]) {
return false
}
}
return true
})
$scope.filteredResults=$filter(“filter”)(数据、函数(val、索引){
对于(var i=0;i
如果对象的索引是它的键,那么您可以使用来检查数组中是否存在它。我假设index
是对象的键
$scope.filteredResults = $filter("filter")(data, function(val, index) {
return myArray.indexOf(index) === -1;
})
如果要返回过滤对象(不包括过滤器列表中存在的任何关键点),可以按关键点过滤,然后根据允许的关键点减少对象
下面是一个过滤黑名单对象的纯JavaScript实现
var数据={
ABC:“Lorem Ipsum Lorem Lorem”,
DEFG:“Lorem Ipsum Lorem Lorem”,
嗨:“Lorem Ipsum Lorem Lorem”,
JK:“Lorem Ipsum Lorem”
};
var黑名单=[“HI”、“LMN”、“ABC”];
var filtered=Object.keys(数据)。filter(函数(键){
返回黑名单。indexOf(键)=-1;
}).reduce(功能(结果、键){
结果[键]=数据[键];
返回结果;
}, {});
document.body.innerHTML=JSON.stringify(过滤,空,”)代码>
body{white-space:pre;font-family:monospace;}
如果您在controller
中执行此操作,为什么不使用纯JavaScript执行此操作
仅供参考:在纯JavaScript中执行这些简单的操作将比在Angular实用程序中执行更快
var数据={
ABC:“Lorem Ipsum Lorem Lorem”,
DEFG:“Lorem Ipsum Lorem Lorem”,
嗨:“Lorem Ipsum Lorem Lorem”,
JK:“Lorem Ipsum Lorem”
};
var myArray=[“HI”、“LMN”、“ABC”];
var keys=Object.keys(数据);
var result={};
对于(变量i=0;i document.body.innerHTML=JSON.stringify(结果)老实说,这只是一个普通的JavaScriptArray.prototype.filter
问题……你有一个名为“filter”的角度过滤器吗$筛选器是获取现有筛选器的服务,您可以使用module.filter()语法定义一个新的筛选器。data
不应该是数组吗?根据文档,过滤器的第一个参数必须是数组
。这是正确的吗?我被angulars过滤所吸引以至于忘记了proto filter。。。非常感谢。