Как отфильтровать массив, используя ToLowerCase в TypeScript - PullRequest
1 голос
/ 02 апреля 2019

У меня есть собственный массив в 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

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Мне удалось получить правильный ответ, изменив ваш код следующим образом:

this.filter = this.array.filter(i =>
  (i["job"] && i.job.toLowerCase().indexOf('ca') != -1) ||
  (i["city"] && i.city.toLowerCase().indexOf('ahmedabad') != -1) 
)
0 голосов
/ 02 апреля 2019
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)
)

проблема связана с приоритетом оператора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...