JavaScript中移除数组中包含指定字符串的多个元素问题
移除数组中包含指定字符串的元素
嘿,这个需求我之前也碰到过,其实只要把原来的完全匹配逻辑改成包含匹配就搞定了,我给你调整下代码:
解决方案代码
var arr = [ 'abc / **efg**','hij / klm','**nop** / qrs','**efg** / okl']; var removeStr = [ 'efg' , 'nop']; arr = arr.filter(function(val) { // 反向判断:只要当前元素不包含removeStr里的任意字符串,就保留它 return !removeStr.some(function(targetStr) { // 检查当前元素是否包含目标字符串,用includes更直观 return val.includes(targetStr); }); }); console.log(arr); // 输出结果:[ 'hij / klm' ]
逻辑说明
Array.some()会遍历removeStr数组,只要其中有一个字符串被当前val包含,就返回true;- 给这个结果加
!取反后,filter就会自动过滤掉那些包含目标字符串的元素,只留下完全不匹配的项; - 如果你的运行环境比较旧(比如不支持ES6的
includes),可以把val.includes(targetStr)换成val.indexOf(targetStr) !== -1,效果完全一致。
内容的提问来源于stack exchange,提问作者uideveloperui
相关产品推荐
相关产品推荐

