过滤1个属性上的对象数组,不限于文本的开头

时间:2016-01-24 00:19:00

标签: javascript lodash md-autocomplete

我试图将lodash与ngMaterial和md-autocomplete结合起来。

我在数组中有一组用户对象:

var User.collection = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 42 },
  { 'user': 'barney', 'age': 36 }
];

我正在尝试过滤此列表,仅返回与搜索查询匹配的列表,例如

var query = "fr"

我让过滤器使用此控制器功能:

collectionFilter: function(query) {
    var lowercaseQuery = angular.lowercase(query);
    return _.filter(User.collection, function(obj) {
        return (angular.lowercase(obj.name).indexOf(lowercaseQuery) === 0)
    })
}

问题在于,如果我在名称的中间输入" rne",我就不会得到任何结果。

1 个答案:

答案 0 :(得分:2)

您正在检查=== 0。试试> -1

Indexof返回字符串中参数的索引(位置)。第一个位置为0.这就是为什么它只显示与第一个字符匹配的结果。

如果您愿意,请尝试将其更改为=== 1并搜索" re"。