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

Filtering an array of objects on 1 property not limited to start of text

我正在尝试将 lodash 与 ngMaterial 和 md-autocomplete 相结合。

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

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

我正在尝试将此列表过滤为 return 仅匹配搜索查询的列表,例如

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" 这样在名字的中间键入星号,我将不会得到任何结果。

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

Indexof returns 参数在字符串中的索引(位置)。第一个位置是 0。这就是为什么它只显示从第一个字符开始匹配的结果。

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