Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在字符串中查找字符串数组?_Javascript_Jquery_Angularjs_Arrays_String - Fatal编程技术网

Javascript 如何在字符串中查找字符串数组?

Javascript 如何在字符串中查找字符串数组?,javascript,jquery,angularjs,arrays,string,Javascript,Jquery,Angularjs,Arrays,String,我想在一个字符串中搜索多个字符串,如果在其中找到任何字符串,则返回true,否则返回false,如下所示: var s = "thing1 thing2" s.contains(["thing1","thing44444"]) // true s.contains("1") // true s.contains("x") // false 到目前为止,我的情况是这样的,但它变得越来越混乱,并没有真正起作用: String.prototype.contains = function(xv) {

我想在一个字符串中搜索多个字符串,如果在其中找到任何字符串,则返回
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
    }
}
现在,如果它通过
for
循环而没有找到任何东西,它将返回
undefined
。在
for
循环之后,我有
returnfalse
,但它会在
for
完成之前运行

我觉得应该有更简单的方法

我已经尝试过,但无法将数组发送到
.search()

我使用的框架:angular 1.5.8、jquery 1.11.1

您可以使用和或

var s1=“thing1 thing2”;
var s2=“Hello Kitty”;
var r1=[“thing1”,“thing44444”]。一些(x=>s1.包括(x));
变量r2=[“特拉维斯”,“海耶特”]。一些(x=>s2。包括(x));
console.log(r1,r2);//true、false
您可以使用和或

var s1=“thing1 thing2”;
var s2=“Hello Kitty”;
var r1=[“thing1”,“thing44444”]。一些(x=>s1.包括(x));
变量r2=[“特拉维斯”,“海耶特”]。一些(x=>s2。包括(x));

console.log(r1,r2);//true,false
“我在for循环后返回false,但它会在for完成之前运行。”考虑到示例中的代码,这是不可能的。您可能希望重新考虑更改内置对象的原型,或者至少确保正确填充多边形。另见。例如,Angular在最新版本的JavaScript中已经是一个函数,并且Angular已经有了…@MikeMcCaughan,这是您引用的第一个答案:“改变一个只由您自己的代码使用的对象的行为是可以的。”不过,我非常感谢您的引用。这里有很多好信息。谢谢兄弟。“我在for循环后返回false,但它会在for完成之前运行。”考虑到示例中的代码,这是不可能的。您可能希望重新考虑更改内置对象的原型,或者至少确保正确填充。另见。例如,Angular在最新版本的JavaScript中已经是一个函数,并且Angular已经有了…@MikeMcCaughan,这是您引用的第一个答案:“改变一个只由您自己的代码使用的对象的行为是可以的。”不过,我非常感谢您的引用。这里有很多好信息。谢谢兄弟。