javascript数组筛选器和多个条件
如何过滤具有多个匹配条件的javascript数组。 下面的代码返回所有数据,而不是2 代码: 示例JSON数组:-javascript数组筛选器和多个条件,javascript,arrays,this,arrow-functions,Javascript,Arrays,This,Arrow Functions,如何过滤具有多个匹配条件的javascript数组。 下面的代码返回所有数据,而不是2 代码: 示例JSON数组:- const codeList.Values = [{ "CodeValue": "CRD_CRE_INS", "CodeValueDisplay": "CRD Credit Institution", }, { "CodeValue": "CRD_EEA_BRA", "CodeValueDisplay": "EEA Branch", }
const codeList.Values = [{
"CodeValue": "CRD_CRE_INS",
"CodeValueDisplay": "CRD Credit Institution",
},
{
"CodeValue": "CRD_EEA_BRA",
"CodeValueDisplay": "EEA Branch",
},
{
"CodeValue": "CRD_NON_EEA_BRA",
"CodeValueDisplay": "Non-EEA Branch",
}
]
表达式
'CRD\u EEA\u BRA'
始终为真,您必须将代码更改为:
this.entityTypes = codeList.Values.filter(c => c.CodeValue === 'CRD_CRE_INS' || c.CodeValue === 'CRD_EEA_BRA');
一个
|
不能那样工作
您可以将这些值放在数组中。这使得它可以很容易地针对多种情况进行扩展
this.entityTypes = codeList.Values
.filter(c => ['CRD_CRE_INS','CRD_EEA_BRA'].includes(c.CodeValue) );
为了避免===的重复,可以使用目标值数组并检查元素是否与任何目标值匹配
const values = ["CRD_CRE_INS","CRD_EEA_BRA"]
this.entityTypes = codeList.Values.filter(c => values.includes(c.CodeValue));
不确定这是否是最佳解决方案,但..您可以使用RegExp进行自定义筛选
#Filtering function
const filterExp = (exp) => new RegExp(exp);
#Example 1
const values = data.filter((e) => filterExp('CRD').test(e.CodeValue));
console.log(values)
//Output
[ { CodeValue: 'CRD_CRE_INS',CodeValueDisplay: 'CRD Credit Institution' },
{ CodeValue: 'CRD_EEA_BRA', CodeValueDisplay: 'EEA Branch' },
{ CodeValue: 'CRD_NON_EEA_BRA',CodeValueDisplay: 'Non-EEA Branch' } ]
#Example 2
const values = data.filter((e) => filterExp('EEA').test(e.CodeValue));
console.log(values)
//Output
[ { CodeValue: 'CRD_EEA_BRA', CodeValueDisplay: 'EEA Branch' },
{ CodeValue: 'CRD_NON_EEA_BRA', CodeValueDisplay: 'Non-EEA Branch' } ]
#Filtering function
const filterExp = (exp) => new RegExp(exp);
#Example 1
const values = data.filter((e) => filterExp('CRD').test(e.CodeValue));
console.log(values)
//Output
[ { CodeValue: 'CRD_CRE_INS',CodeValueDisplay: 'CRD Credit Institution' },
{ CodeValue: 'CRD_EEA_BRA', CodeValueDisplay: 'EEA Branch' },
{ CodeValue: 'CRD_NON_EEA_BRA',CodeValueDisplay: 'Non-EEA Branch' } ]
#Example 2
const values = data.filter((e) => filterExp('EEA').test(e.CodeValue));
console.log(values)
//Output
[ { CodeValue: 'CRD_EEA_BRA', CodeValueDisplay: 'EEA Branch' },
{ CodeValue: 'CRD_NON_EEA_BRA', CodeValueDisplay: 'Non-EEA Branch' } ]