Фильтровать массив с элементами по первой букве каждого слова - PullRequest
2 голосов
/ 13 января 2020

У меня есть этот код:

return !this.form.get('skills').value.map(item => item.id).includes(skill.id) &&
            (value === null || skill.name.toLowerCase().startsWith(value.toLowerCase()));

У меня есть этот список:

Artist
Armagedon
Commandos Artist
Refactor
Gol Jumir Afart
Armony

Если я напишу: A: я получу список:

Artist
Armagedon
Armony

Но я хочу получить и предметы: Commandos Artist и Gol Jumir Afart.

Можете ли вы мне помочь, пожалуйста?

1 Ответ

2 голосов
/ 13 января 2020

Вы можете использовать регулярное выражение для фильтрации ваших значений. Мы будем искать все слова, начинающиеся с вашего письма.

const myFilter = 'A';

const regex = new RegExp(`(^${myFilter}.*)|( ${myFilter}.*)`, 'i');

const filtered = [
  'Artist',
  'Armagedon',
  'Commandos Artist',
  'Commandos Artist Paul',
  'Refactor',
  'Gol Jumir Afart',
  'armony',
].filter(x => regex.test(x));

console.log(filtered);
...