簡體   English   中英

如何將嵌套數組與常規數組進行比較?

[英]How to compare nested array with regular array?

我有這兩個數組,一個是嵌套數組,一個是常規數組。 都包含字符串。 我需要遍歷常規數組並評估元素是否僅匹配“聲明”鍵和“匹配”鍵而不匹配排除鍵。 這樣做的最佳方法是什么?

 const claimsArr = [ {claim:'Protein',matches:['high in protein','^protein'],exclusions:['whey','milk']}, {claim:'Carbs',matches:['high in carbs','^carbs'],exclusions:['sugar','lactose']}, ]

 DomArray = [ "Protein", "whey" , ]

如果 DomArray 包含“聲明”&&“匹配”但不包含“排除”中的內容,我想要的輸出將是匹配項的數組

預期輸出:

 result = ["Protien", "whey", "high in protein" ,"protein"]

您可以混合使用filterincludes Array功能來實現此目的。

 const claimsArr = [ { claim: 'Protein', matches: ['high in protein', '^protein'], exclusions: ['whey', 'milk'], }, { claim: 'Carbs', matches: ['high in carbs', '^carbs'], exclusions: ['sugar', 'lactose'], }, ]; const DomArray = ['Protein', 'whey']; const isAMatch = (str) => DomArray.some(dom => str.toLowerCase().includes(dom.toLowerCase())) const result = claimsArr.reduce((a, c) => { const matches = [c.claim, ...c.matches].filter(isAMatch); a.push(...matches); return a; }, []) console.log(result)

const claimsArr = [
  {
    claim: "Protein",
    matches: ["high in protein", "^protein"],
    exclusions: ["whey", "milk"],
  },
  {
    claim: "Carbs",
    matches: ["high in carbs", "^carbs"],
    exclusions: ["sugar", "lactose"],
  },
];

const DomArray = ["Protein", "whey"];
const Result = [];
const data = claimsArr
  .map((x) => [x.claim, x.matches])
  .flat(2);

for (let i = 0; i < DomArray.length; i++) {
  if (data.includes(DomArray[i])) {
    Result.push(DomArray[i]);
  } else {
    continue;
  }
}

暫無
暫無

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

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