Массив фильтров TypeScript, соответствующий выражению регулярного выражения - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь отфильтровать массив на основе набора выражений регулярных выражений. Если элемент в массиве соответствует какому-либо выражению регулярного выражения, я хочу перенести его в другой массив. Я прочитал, что могу использовать match ()и test () для этого, но я не могу понять, как это сделать. Пожалуйста, помогите. Заранее спасибо.

Вот мое регулярное выражение exp:

RAM-HEXA-*F-Q1
RAM-D-AT44-*-Q2
RAM-D-AT44-*-Q3

Мой тест обр.:

testData={
[
        { value: 'RAM-HEXA-34F-Q1
' },
        { value: 'RAM-D-AT44-AQ-Q2
' },
        { value: 'RAM-D-AT44-ZS-Q3
' },
        { value: 'RAM-D-N7-9-Q3
' },
       { value: 'RAM-QUATRA-1F-Q1
' },
        { value: 'RAM-X-AT44-T-Q2
' }
      ]
}

ТАК я пытаюсь получить элементы из testData, которые соответствуют выражениям reg.Поэтому я пытаюсь получить результирующий массив, который выглядит следующим образом:

filteredData={
[
        { value: 'RAM-HEXA-34F-Q1
' },
        { value: 'RAM-D-AT44-AQ-Q2
' },
        { value: 'RAM-D-AT44-ZS-Q3
' }]

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

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

const regexes = [
  'RAM-HEXA-*F-Q1',
  'RAM-D-AT44-*-Q2',
  'RAM-D-AT44-*-Q3',
];

const data = [
  { value: 'RAM-HEXA-34F-Q1' },
  { value: 'RAM-D-AT44-AQ-Q2' },
  { value: 'RAM-D-AT44-ZS-Q3' },
  { value: 'RAM-D-N7-9-Q3' },
  { value: 'RAM-QUATRA-1F-Q1' },
  { value: 'RAM-X-AT44-T-Q2' }
];

const filtered = data.filter(item => regexes.some(regex => item.value.match(regex)));

console.log(filtered);
0 голосов
/ 20 мая 2019

Вы можете использовать метод массива фильтра:

var regex1 = RegExp('RAM-HEXA-*(F-Q1)?');
var filtered = testData.filter((x) = > 
{
return regex1.test(x.value);
})

То же самое с другими условиями.

что это пример в jsfiddle https://jsfiddle.net/3dgvw7yh/

...