gpt4 book ai didi

javascript - 过滤不包含来自其他数组的字符串的字符串?

转载 作者:行者123 更新时间:2023-11-30 08:23:35 24 4
gpt4 key购买 nike

我想通过排除包含黑名单数组中的任何子字符串的网址来过滤网址数组。

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。谢谢。 :)

最佳答案

您可以像这样使用 filter():

const cleanUrls = urls.filter(u => blacklist.every(s => !u.includes(s)));

或者

const cleanUrls = urls.filter(u => !blacklist.some(s => u.includes(s)));

描述:

  • .includes() 将检查是否存在包含另一个字符串的子字符串。
  • .every() 将检查特定 URL 中是否不存在 blacklist 数组的字符串。
  • .some() 将检查特定 URL 中是否存在 blacklist 数组中的任何字符串。
  • .filter() 将只选择那些将通过测试的 URL。

演示:

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'];

const cleanUrls = urls.filter(u => blacklist.every(s => !u.includes(s)));

console.log(cleanUrls);

文档:

关于javascript - 过滤不包含来自其他数组的字符串的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com