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;idocument.body.innerHTML=JSON.stringify(结果)Array.prototype.filter
问题……你有一个名为“filter”的角度过滤器吗$筛选器是获取现有筛选器的服务,您可以使用module.filter()语法定义一个新的筛选器。
data
不应该是数组吗?根据文档,过滤器的第一个参数必须是
数组
。这是正确的吗?我被angulars过滤所吸引以至于忘记了proto filter。。。非常感谢。