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

how to check if the url contains multiple strings. Javascript/jquery

本文关键字:包含多 字符串 Javascript jquery 是否 url 何检查 检查      更新时间:2023-09-26

在如何检查url是否包含给定字符串的问题中。Javascript/jquery答案检查url是否包含给定的字符串。我想扩展它来检查它是否包含两个东西name=franky&gender=男性。我试过

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()函数只查找单个字符串。要测试两个字符串,您需要根据Christofer的回答对.indexOf()进行两次调用:

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

我发布答案的原因也是为了简要解释&&运算符的工作原理:给定expr1 && expr2&&运算符"如果可以转换为false,则返回expr1;否则,返回expr2。"

"转换为假的"是什么意思?基本上nullundefined0NaN""(空字符串)是"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;
}

这样说吧。

var myUrl = window.location.href;
var queryStrings = ["name=franky", "gender=male"];
var allPresent = CheckIfAllQueryStringsExist(myUrl, queryStrings);