我正在使用angular的$filter("filter")
过滤对象数组。由于我进行了复杂的过滤,因此决定定义一个比较器。尽管如此,在我的比较器中,只有出现在过滤表达式上的属性才可用
var array = [
{"id": 1, "placeId":253, "name":"John"},
{"id": 2, "placeId":253, "name":"Jane"},
{"id": 3, "placeId":32, "name":"Mike"},
{"id": 4, "placeId":89, "name":"Ana"}
];
var awesomeFiltering = function(){
return $filter("filter")(array, {"placeId":253}, function(actual expected){
// "actual" brings only the value for placeId attribute!
// How do I access attribute "name", for example?
});
};
如何从比较器内部的对象访问其他属性?
最佳答案
comparator
仅用于从定义的表达式{"placeId":253}
中检索的值。由于您的表达式仅包含placeId
,这是您可以在comparator
中检索的唯一值。
但是,您可以仅使用自定义过滤器expression
,而无需使用comparator
进行复杂的过滤。
var awesomeFiltering = function(){
return $filter("filter")(array, function(value, index, array){
return value.placeId === 253 && value.name === "John";
});
};