繁体   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