У меня есть собственный массив в TypeScript.
array = [{ name: "Hardik", city: null, job: null },
{ name: "John", city: "Ahmedabad", job: "IT" },
{ name: "Margie", city: "Mumbai", job: "CA" },
{ name: "Creature", city: "Banglore", job: null },
{ name: "Smooth", city: null, job: null }];
Я хочу отфильтровать этот массив на основе города и работы.Кроме того, мне нужно проверить без учета регистра.поэтому я конвертирую в ToLowerCase.
this.filter = this.array.filter(i =>
i.job.toLowerCase().indexOf('ca') != -1 ||
i.city.toLowerCase().indexOf('ahmedabad') != -1
)
Что работает правильно, если столбцы не равны NULL.Если столбец имеет значение NULL, он выдает ошибку, не может toLowerCase () из NULL.Итак, сначала я проверяю, где столбцы нулевые или нет.
this.filter = this.array.filter(i =>
i["job"] != null ? i.job.toLowerCase().indexOf('ca') != -1 : false ||
i["city"] != null ? i.city.toLowerCase().indexOf('ahmedabad') != -1 : false
)
Но это дает неправильный вывод.
[ { "name": "Margie", "city": "Mumbai", "job": "CA" } ]
Ожидаемый результат:
[{ name: "John", city: "Ahmedabad", job: "IT" },
{ name: "Margie", city: "Mumbai", job: "CA" }]
ссылка: https://stackblitz.com/edit/filter-with-tolowercase-and-null?file=src/app/app.component.ts