【发布时间】:2018-09-08 17:38:53
【问题描述】:
我想通过排除包含黑名单数组中的任何子字符串的网址来过滤网址数组。
const urls = [
'http://example.com/people/chuck',
'http://example.com/goats/sam',
'http://example.com/goats/billy',
'http://example.com/goats/linda',
'http://example.com/cows/mary',
'http://example.com/cows/betty',
'http://example.com/people/betty']
const blacklist = ['cows', 'goats']
let cleanUrls = [];
我可以使用 for 循环来做到这一点,但我想找到一种使用过滤器和/或减少的干净/简洁的方法。
如果我不需要遍历 x 个黑名单项目:
cleanUrls = urls.filter( url => !url.includes(blacklist[0]) )
.filter( url => !url.includes(blacklist[1]) )
我也不想只使用 forEach 或 map 遍历黑名单,因为如果特定 url 与任何黑名单条目匹配,我想立即停止。
请使用纯 JS。谢谢你。 :)
【问题讨论】:
-
urls.some(url => blacklist.includes(url))
标签: javascript arrays string filtering