javascript - 如何比较嵌套数组和常规数组?
问题描述
我有这两个数组,一个是嵌套数组,一个是常规数组。都包含字符串。我需要遍历常规数组并评估元素是否仅匹配“声明”键和“匹配”键,但不匹配排除键。这样做的最佳方法是什么?
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"]
解决方案
您可以混合使用 of 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)
推荐阅读
- google-chrome - 如何防止 Google Chrome 开发者工具调整浏览器视口的大小?
- arangodb - ArangoDB AQL 更新奇怪的属性名称
- php - PHP Mongodb驱动1.5:如何使用连接池?
- robotframework - 在 PDF 中查找单词
- ruby-on-rails - Rails - 检查父对象是否被销毁并在依赖项上调用销毁
- javascript - 引导时钟选择器问题在时间和上午之间需要一个空格
- objective-c - 如何在我的 Swift 程序中使用来自 Github 的 Objective-C 代码?
- python - 尽管脚本本身被编译和执行多次,但只调用一次函数
- excel - 收集的数据在外部 excel 关闭时被删除 - excel vba
- jquery - 如何使用从 ajax 调用返回的数据填充特定的 SelectField?