Объединить несколько результатов поиска Угловой 10

#javascript #angular #typescript

Вопрос:

Я хочу отфильтровать свои данные , используя имя, номер мобильного телефона, по одному полю ввода, как фильтр данных материалов. конструктор:

   constructor() {
            this.filteredPatient = this.patientsearch.valueChanges
              .pipe(
                startWith(''),
                map(p => p ? this._filterPatient(p) : this.patients.slice())
                    );
          }



    private _filterPatient(value: string): IPatient[] {
    const filterValue = value.toLowerCase();

    const searchByfirstName = this.patients.filter(p => p.firstName.toLowerCase().includes(filterValue));
    const searchBylastName = this.patients.filter(p => p.lastName.toLowerCase().includes(filterValue));
    const searchBymobileNumber = this.patients.filter(p => p.mobileNumber.toLowerCase().includes(filterValue));
    const mergedObj = { ...searchByfirstName, ...searchBymobileNumber };
    return mergedObj;
  }
 

но это не работает . Может ли кто-нибудь подсказать мне, как я могу фильтровать данные .

Ответ №1:

Вы можете добиться этого следующим образом:

 private _filterPatient(value: string): IPatient[] {
  const filterValue = value.toLowerCase();

  const result = this.patients.filter(
    (p) =>
      p.firstName?.toLowerCase().includes(filterValue) ||
      p.lastName?.toLowerCase().includes(filterValue) ||
      p.mobileNumber?.toLowerCase().includes(filterValue)
  );

  return resu<
}