如何使用Regular Expression返回包含指定关键词的数组元素字符串
问题解决实现
原代码错误点
- 循环条件错误:
i <= arr.length会触发数组下标越界,数组索引范围为0 ~ arr.length - 1,正确条件应为i < arr.length - JavaScript数组不存在
regExp原生方法,正则匹配需要针对每个字符串元素调用匹配相关方法 - 循环内直接对
newArr赋值会覆盖之前的结果,而非向结果数组追加匹配到的元素 - 此处场景不需要
g(全局匹配)、m(多行匹配)修饰符,直接使用基础正则即可
推荐实现(最简洁)
使用数组filter方法搭配正则test()方法筛选匹配元素:
const arr = [ 'Sweet TV - some description', 'MEGOGO - some description.', 'Netflix - some description.', ]; // 筛选包含Netflix的元素,如需不区分大小写可将正则改为/Netflix/i const newArr = arr.filter(item => /Netflix/.test(item)) console.log(newArr); // 输出:['Netflix - some description.']
修正原循环写法
如果你需要保留循环的实现形式,可以修改为如下代码:
const arr = [ 'Sweet TV - some description', 'MEGOGO - some description.', 'Netflix - some description.', ]; let newArr = [] // 修正循环条件 for (let i = 0; i < arr.length; i++) { // 对每个元素做正则匹配,匹配成功就推入结果数组 if (/Netflix/.test(arr[i])) { newArr.push(arr[i]) } } console.log(newArr);
内容的提问来源于stack exchange,提问作者Vladyslav Mazur
相关产品推荐
相关产品推荐

