как искать поле на основе ввода - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть список объектов, отображаемых в пользовательском интерфейсе. Я должен искать по полю, например, «имя».

'name': 'THE TERA COMPANY'

Если пользователь вводит 'tera', я должен отображать все объекты с 'КОМПАНИЕЙ TERA'. То, что я пробовал, отображает эти объекты, только если пользователь вводит точно такое же имя.

Ниже приведен пример с методом include ()

  searchInputChanged(input) {
    this.filters.searchBy = input;
    this.loading = true;
    this.allItems= this.filter();
  }


filter() {
    const result = JSON.parse(JSON.stringify(this.fallBackItems));

    Object.keys(result).forEach(key => {
      if (this.filters.searchBy && this.filters.searchBy.length) {
        result[key] = result[key].filter(r =>
          this.filters.searchBy.includes(r.id) ||
          this.filters.searchBy.includes(r.name));
      }
    });

    this.loading = false;
    return result;
  }

1 Ответ

0 голосов
/ 29 апреля 2020

Это правильно с включениями, но это меняет ключи в обратном порядке

filter() {
  let result = JSON.parse(JSON.stringify(this.fallBackItems));

  if (this.filters.searchBy && this.filters.searchBy.length) {
    result = Object
     .entries(result)
     .filter(([, { id, name }]) =>
       id.toLowerCase().includes(this.filter.searchBy.toLowerCase()) ||
       name.toLowerCase().includes(this.filter.searchBy.toLowerCase())
     )
     .reduce((acc, [key, value]) => {
       acc[key] = value;

       return acc;
     }, {});
  }

  this.loading = false;
  return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...