我正在使用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";
    });
};

10-06 04:18