按字符串数组过滤javascript数组

按字符串数组过滤javascript数组,javascript,arrays,Javascript,Arrays,我有一个字符串数组,看起来像这样 arr=['video-1','video-2','cpe-1','abc-1','abc-2'] 我可以通过以下操作简单地过滤掉这一点: 让newarr=arr.filter(item=>item.indexOf('video')>=0) >newarr=[“视频-1”、“视频-2”] 但是,我尝试使用字符串数组作为输入,通过 let q = ['video', 'CPE'] let newarr2 = arr.filter(item => q.inde

我有一个字符串数组,看起来像这样

arr=['video-1','video-2','cpe-1','abc-1','abc-2']

我可以通过以下操作简单地过滤掉这一点:

让newarr=arr.filter(item=>item.indexOf('video')>=0)

>newarr=[“视频-1”、“视频-2”]

但是,我尝试使用字符串数组作为输入,通过

let q = ['video', 'CPE']
let newarr2 = arr.filter(item => q.indexOf(item) >= 0)

但这给了我一个空数组。正确用法是什么?

检查
是否包含在项目中。您想要包含的一些关键字

由于大小写也不同,因此也可以事先对所有内容调用
toLowerCase()

const-arr=['video-1'、'video-2'、'cpe-1'、'abc-1'、'abc-2'];
const关键字stofind=['video','CPE'];
const-keywordsToFindLower=keywordsToFind.map(s=>s.toLowerCase());
常数newarr2=arr.filter(
item=>keywordsToFindLower.some(
keywordToFind=>item.toLowerCase().includes(keywordToFind)
)
);

console.log(newarr2)
您可以从
q
生成正则表达式,使其比使用其他数组方法更有效:

const-arr=['video-1'、'video-2'、'cpe-1'、'abc-1'、'abc-2'];
const q=['video','CPE'];
const re=RegExp(q.join(“|”),“i”);
常数res=arr.filter(e=>re.test(e));

控制台日志(res)
虽然对问题的要求有效,但此解决方案假定
q
中的任何字符串都不包含任何正则表达式字符。例如,在中,
“c”
“e”
过滤器返回,但它们不应该返回。