Фильтрация массива объектов по 1 свойству, не ограниченному началом текста

Я пытаюсь объединить 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».


person Batman    schedule 24.01.2016    source источник


Ответы (1)


Вы проверяете === 0. Попробуйте > -1.

Indexof возвращает индекс (позицию) параметра в строке. Первая позиция равна 0. Вот почему отображаются только результаты, совпадающие с первым символом.

Если хотите, попробуйте изменить его на === 1 и найдите «re».

person pedro_sland    schedule 24.01.2016