JavaScript中如何基于另一数组的字符匹配规则过滤数组
基于字符匹配逻辑的数组过滤实现
完全可以实现该需求,核心匹配规则为:日志条目的log字段只要包含过滤规则数组中任意一个关键词,该条目就会被保留在返回结果中,可以直接借助JavaScript原生数组方法实现,无需额外依赖。
核心实现代码
/** * 按关键词过滤日志数组 * @param {Array} logList - 原始日志数据集 * @param {Array} keywordList - 过滤关键词数组 * @returns {Array} 过滤后的日志结果 */ function filterLogs(logList, keywordList) { return logList.filter(logItem => { // 校验当前日志是否命中任意一个过滤关键词 return keywordList.some(keyword => logItem.log.includes(keyword)) }) }
场景验证
测试用例1:过滤关键词为["log"]
// 修正原示例语法问题后的标准日志数据集 const logs = [ {id: 1, log: "log1"}, {id: 2, log: "log2"}, {id: 3, log: "fail"} ] const filterRule1 = ["log"] console.log(filterLogs(logs, filterRule1))
运行输出和预期完全一致:
[{id:1, log: "log1"}, {id:2, log: "log2"}]
测试用例2:过滤关键词为["1", "fai"]
const filterRule2 = ["1", "fai"] console.log(filterLogs(logs, filterRule2))
运行输出匹配预期:
[{id:1, log: "log1"}, {id:3, log: "fail"}]
扩展说明:如果需要忽略大小写匹配,只需要把匹配逻辑调整为
logItem.log.toLowerCase().includes(keyword.toLowerCase())即可;如果需要所有关键词都命中才保留,把some方法替换为every方法就行。
内容的提问来源于stack exchange,提问作者CodeNoob
相关产品推荐
相关产品推荐

