I'd like to search a string for multiple strings, and return true
if it finds any of them in there, false
otherwise, something like this:
我想在一个字符串中搜索多个字符串,如果在那里找到任何字符串则返回true,否则返回false,如下所示:
var s = "thing1 thing2"
s.contains(["thing1","thing44444"]) // true
s.contains("1") // true
s.contains("x") // false
Here's what I have so far, but it's getting messier and doesn't really work:
这是我到目前为止所拥有的,但它变得更加混乱,并没有真正起作用:
String.prototype.contains = function(xv) {
var t = this
if(xv.isString()){ // isString/isArray are functions I made elsewhere in my code, they work.
if(t.indexOf(xv) > -1)
return true;
} else if(xv.isArray()) {
if(xv.contains(t)){
return true
}
for(v in xv){
if(t.indexOf(xv[v]) > -1){
return true
}
}
} else {
return false
}
}
As of now, it will return undefined
if it makes it through the for
loop without finding anything. I had return false
after the for
loop, but it would run before the for
finished.
截至目前,它将返回undefined,如果它通过for循环而没有找到任何东西。我在for循环后返回false,但它会在for完成之前运行。
I feel like there's gotta be an easier way to do this.
我觉得必须有一个更简单的方法来做到这一点。
I've already tried How do you search multiple strings with the .search() Method? but I couldn't send an array to .search()
.
我已经尝试过如何使用.search()方法搜索多个字符串?但我无法将数组发送到.search()。
Frameworks I'm using: angular 1.5.8, jquery 1.11.1
我正在使用的框架:angular 1.5.8,jquery 1.11.1
1 个解决方案
#1
4
You can use Array.some
and String.indexOf
or String.includes
您可以使用Array.some和String.indexOf或String.includes
var s1 = "thing1 thing2";
var s2 = "Hello Kitty";
var r1 = ["thing1","thing44444"].some( x => s1.includes(x));
var r2 = ["Travis","Heeeeeeter"].some( x => s2.includes(x));
console.log(r1, r2); // true, false
#1
4
You can use Array.some
and String.indexOf
or String.includes
您可以使用Array.some和String.indexOf或String.includes
var s1 = "thing1 thing2";
var s2 = "Hello Kitty";
var r1 = ["thing1","thing44444"].some( x => s1.includes(x));
var r2 = ["Travis","Heeeeeeter"].some( x => s2.includes(x));
console.log(r1, r2); // true, false