[英]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"]
您可以混合使用filter
並includes
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.