我想在字符串中搜索多个字符串,如果在其中找到任何字符串,则返回true
,否则返回false
,如下所示:
var s = "thing1 thing2"
s.contains(["thing1","thing44444"]) // true
s.contains("1") // true
s.contains("x") // false
这是我到目前为止所拥有的,但它变得更加混乱,并没有真正发挥作用:
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
}
}
截至目前,如果它通过undefined
循环而没有找到任何内容,它将返回for
。在return false
循环后我有for
,但它会在for
完成之前运行。
我觉得这样做更容易。
我已经尝试How do you search multiple strings with the .search() Method?,但我无法将数组发送到.search()
。
框架我使用:angular 1.5.8,jquery 1.11.1
答案 0 :(得分:4)
您可以使用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