簡體   English   中英

javascript數組過濾器的倍數和條件

[英]javascript array filter multiple and condition

如何過濾具有多個匹配條件的javascript數組。 以下代碼返回所有數據,而不僅僅是2。

碼:

this.entityTypes = codeList.Values.filter(c => c.CodeValue === 'CRD_CRE_INS' || 'CRD_EEA_BRA');

樣本JSON數組:-

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",
  }
] 

一個|| 不能那樣工作

您可以將值放在數組中。 這使得它可以輕松擴展為多種條件

this.entityTypes = codeList.Values
                   .filter(c => ['CRD_CRE_INS','CRD_EEA_BRA'].includes(c.CodeValue) );

表達式'CRD_EEA_BRA'始終為真,您必須將代碼更改為:

this.entityTypes = codeList.Values.filter(c => c.CodeValue === 'CRD_CRE_INS' ||  c.CodeValue === 'CRD_EEA_BRA');

為避免重復===,您可以使用目標值數組,並檢查元素是否與任何目標值匹配

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' } ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM