如何检查url是否包含多个字符串。Javascript/jquery
问题中 答案检查url是否包含给定字符串。我想扩展它来检查它是否包含两个东西name=franky&&gender=male。我试过了如何检查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两次,而不是在同一个调用中检查两个字符串。大概是这样的
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;
}
+我需要解释一下。我正准备把它作为一个评论发表。我想解释一下。我正要把它作为一条评论发布。我最初尝试过类似的方法,但没有完全正确的语法。我最初尝试过类似的方法,但没有完全正确的语法。