将完整对象传递给AngularJS过滤器比较器

时间:2018-02-21 18:38:16

标签: javascript angularjs filter filtering

我正在使用angular $filter("filter")来过滤数组o对象。由于我有一个复杂的过滤,我决定定义一个比较器。尽管如此,在我的比较器中,只有过滤表达式上出现的属性可用

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?
    });
};

如何从比较器内的对象访问其他属性?

1 个答案:

答案 0 :(得分:2)

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";
    });
};