如何检查url是否包含多个字符串。Javascript/jquery

如何检查url是否包含多个字符串。Javascript/jquery,javascript,jquery,url,Javascript,Jquery,Url,问题中 答案检查url是否包含给定字符串。我想扩展它来检查它是否包含两个东西name=franky&&gender=male。我试过了 if(window.location.href.indexOf("name=franky" && "gender=male") > -1) 一开始似乎是有效的,但经过进一步测试,我发现如果只有一个名字或性别在场,它似乎是有效的。这里哪里出错了?您可以将它分成两部分,并调用indexOf两次,而不是在同一个调用中检查两个字符串。大概是这样的

问题中 答案检查url是否包含给定字符串。我想扩展它来检查它是否包含两个东西name=franky&&gender=male。我试过了

if(window.location.href.indexOf("name=franky" && "gender=male") > -1)

一开始似乎是有效的,但经过进一步测试,我发现如果只有一个名字或性别在场,它似乎是有效的。这里哪里出错了?

您可以将它分成两部分,并调用indexOf两次,而不是在同一个调用中检查两个字符串。大概是这样的:

if(window.location.href.indexOf("name=franky") > -1 && 
    window.location.href.indexOf("gender=male") > -1)

您可以将它分成两部分并调用indexOf两次,而不是在同一个调用中检查两个字符串。大概是这样的:

if(window.location.href.indexOf("name=franky") > -1 && 
    window.location.href.indexOf("gender=male") > -1)
.indexOf()
函数只查找单个字符串。根据Christofer的回答,要测试两个字符串,需要两次调用
.indexOf()

if(window.location.href.indexOf("name=franky") > -1 && 
   window.location.href.indexOf("gender=male") > -1)
我发布答案的原因也是为了简要解释
&
操作符的工作原理:给定
expr1&&expr2
,“如果可以转换为false,则返回
expr1
;否则返回
expr2

“转化为错误”是什么意思?基本上,
null
undefined
0
NaN
(空字符串)是“falsy”,将“转换为false”。非零数字、非空字符串和任何对象都是“truthy”,并将转换为true

这意味着当您说
“name=franky”&&&“gender=male”
时,
&&&
运算符测试第一个操作数,发现(在本例中)它不能转换为false,因此返回
“gender=male”
。因此,您的代码在某些时候似乎有效的原因是,实际上它是这样做的:

if(window.location.href.indexOf("gender=male") > -1)
.indexOf()
函数只查找单个字符串。根据Christofer的回答,要测试两个字符串,需要两次调用
.indexOf()

if(window.location.href.indexOf("name=franky") > -1 && 
   window.location.href.indexOf("gender=male") > -1)
我发布答案的原因也是为了简要解释
&
操作符的工作原理:给定
expr1&&expr2
,“如果可以转换为false,则返回
expr1
;否则返回
expr2

“转化为错误”是什么意思?基本上,
null
undefined
0
NaN
(空字符串)是“falsy”,将“转换为false”。非零数字、非空字符串和任何对象都是“truthy”,并将转换为true

这意味着当您说
“name=franky”&&&“gender=male”
时,
&&&
运算符测试第一个操作数,发现(在本例中)它不能转换为false,因此返回
“gender=male”
。因此,您的代码在某些时候似乎有效的原因是,实际上它是这样做的:

if(window.location.href.indexOf("gender=male") > -1)

另一种通用方法

function CheckIfAllQueryStringsExist(url, qsCollection) {
    for (var i = 0; i < qsCollection.length; i++) {
        if (url.indexOf(qsCollection[i]) == -1) {
            return false;
        }
    }
    return true;
}

另一种通用方法

function CheckIfAllQueryStringsExist(url, qsCollection) {
    for (var i = 0; i < qsCollection.length; i++) {
        if (url.indexOf(qsCollection[i]) == -1) {
            return false;
        }
    }
    return true;
}

+我需要解释一下。我正准备把它作为一个评论发表。我想解释一下。我正要把它作为一条评论发布。我最初尝试过类似的方法,但没有完全正确的语法。我最初尝试过类似的方法,但没有完全正确的语法。