如何检查字符串是否包含数组的任何元素?如果元素有一些字符串,我想过滤一些数组。请看下面的代码。
var arr = ['banana', 'monkey banana', 'apple', 'kiwi', 'orange'];
function checker(value) {
var prohibited = ['banana', 'apple'];
for (var i = 0; i < prohibited.length; i++) {
if (value.indexOf(prohibited[i]) == -1) {
return true;
} else {
return false;
}
}
}
arr = arr.filter(checker);
console.log(arr);
结果是[ 'apple', 'kiwi', 'orange' ]
. The 'apple'
应该被删除,但事实并非如此。
上面的代码只过滤了“香蕉”,没有过滤“苹果”。我有很多关键词需要过滤。有更容易的方法吗?
它可以这么简单:
const arr = ['banana', 'monkey banana', 'apple', 'kiwi', 'orange'];
const checker = value =>
!['banana', 'apple'].some(element => value.includes(element));
console.log(arr.filter(checker));
ECMAScript 6 FTW!
The checker
uses 箭头函数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions.
The !
意思是排除所有不满足条件的元素。
The some()
方法测试数组中的某些元素是否通过所提供函数实现的测试。
from Array.prototype.some() docs on MDM https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
The includes()
方法确定一个字符串是否可以在另一个字符串中找到,返回true
or false
作为适当的。
from String.prototype.includes() docs on MDM https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
由于并非所有浏览器都支持某些最新的 ECMAScript 功能,因此您应该使用Babel https://babeljs.io/将您的代码编译为 ECMAScript 5。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)