首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按字符串数组过滤javascript数组

按字符串数组过滤javascript数组
EN

Stack Overflow用户
提问于 2019-09-08 23:38:39
回答 2查看 46关注 0票数 1

我有一个字符串数组,如下所示

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

我只需通过以下操作将其过滤掉:

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

>> newarr = ["video-1", "video-2"]

但是,我尝试使用字符串数组作为输入,通过以下操作提供多个筛选器选项

代码语言:javascript
复制
let q = ['video', 'CPE']
let newarr2 = arr.filter(item => q.indexOf(item) >= 0)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-08 23:41:16

检查要包含的关键字的.some是否包含在项中。

由于套管也是不同的,所以预先对所有内容调用toLowerCase()

代码语言:javascript
复制
const arr = ['video-1', 'video-2', 'cpe-1', 'abc-1', 'abc-2'];
const keywordsToFind = ['video', 'CPE'];
const keywordsToFindLower = keywordsToFind.map(s => s.toLowerCase());
const newarr2 = arr.filter(
  item => keywordsToFindLower.some(
    keywordToFind => item.toLowerCase().includes(keywordToFind)
  )
);
console.log(newarr2);

票数 2
EN

Stack Overflow用户

发布于 2019-09-08 23:44:59

您可以使用q进行正则表达式,使其比使用其他数组方法更有效:

代码语言:javascript
复制
const arr = ['video-1', 'video-2', 'cpe-1', 'abc-1', 'abc-2'];
const q = ['video', 'CPE'];

const re = RegExp(q.join("|"), "i");
const res = arr.filter(e => re.test(e));

console.log(res);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57846502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档