如何提取JS数组中所有在目标字符串里出现的字符串值
你可以使用Array.prototype.filter()方法实现需求,该方法会保留数组中所有符合判断条件的元素,返回新的元素集合,刚好可以替换你现在用的some()方法,原有判断逻辑不需要修改。
实现代码
// 原有变量定义 var ratio = ["Net Sales", "Total Sales", "Profit", "Day's Sale", "Average", "Sum"] var str = "ABC of [Net Sales = Total Sales (Profit)]" // 筛选匹配元素 var matchedItems = ratio.filter(item => str.includes(item))
运行后matchedItems的值就是你需要的["Net Sales", "Total Sales", "Profit"]。
可选优化
如果需要忽略大小写匹配,可以统一转成小写后再判断:
var matchedItems = ratio.filter(item => str.toLowerCase().includes(item.toLowerCase()))
如果需要避免子串误匹配(比如数组存在Sales元素时不会和Net Sales误匹配),可以改用正则加单词边界判断:
var matchedItems = ratio.filter(item => new RegExp(`\\b${item}\\b`).test(str))
内容的提问来源于stack exchange,提问作者Umang
相关产品推荐
相关产品推荐

