我正在尝试根据一组正则表达式过滤数组。请阅读我可以使用Match((和test((来执行此操作,但我无法修改和如何做到这一点。请提前感谢。
这是我的正则exp:
RAM-HEXA-*F-Q1
RAM-D-AT44-*-Q2
RAM-D-AT44-*-Q3
我的测试ARR:
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
' }
]
}
基本上,我试图从符合Reg Exprions的TestData中获取这些项目。因此,我试图获得一个看起来像这样的结果数组:
filteredData={
[
{ value: 'RAM-HEXA-34F-Q1
' },
{ value: 'RAM-D-AT44-AQ-Q2
' },
{ value: 'RAM-D-AT44-ZS-Q3
' }]
这是对其进行测试的代码。请注意,您的不发格符合您的数据,因此是空数组结果。
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);
您可以使用过滤器数组方法:
var regex1 = RegExp('RAM-HEXA-*(F-Q1)?');
var filtered = testData.filter((x) = >
{
return regex1.test(x.value);
})
与其他条件相同。
这是jsfiddle中的示例https://jsfiddle.net/3dgvw7yh/