按每个单词的第一个字母过滤包含元素的数组

Filter an array with elements by first letter of each word

我有这个代码:

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 ArtistGol Jumir Afart

你能帮帮我吗?

您可以使用正则表达式来过滤您的值。我们将查找以您的来信开头的每个单词。

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);