如何检查url是否包含多个字符串.Javascript/jquery
how to check if the url contains multiple strings. Javascript/jquery
在如何检查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
。"
"转换为假的"是什么意思?基本上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;
}
这样说吧。
var myUrl = window.location.href;
var queryStrings = ["name=franky", "gender=male"];
var allPresent = CheckIfAllQueryStringsExist(myUrl, queryStrings);
相关文章:
- 如何创建包含多个视频的视频横幅
- 如何将正则表达式包含到字符串数组中
- 获取类中包含给定字符串的元素的ID
- 比较包含多个值对的两个JavaScript数组
- 需要一个用于AJAX的Javascript库,其中包含多部分/表单数据
- 如何检查url是否包含多个字符串.Javascript/jquery
- 如何在Javascript中检查字符串是否包含多个空格并返回
- jQuery包含多个字符串优化
- 从包含多维的字符串构建 JSON 对象
- 如何测试字符串是否按顺序包含多个定义的单词
- Javascript字符串.match拒绝返回包含多个匹配项的数组
- 检查单击的目标是否包含多个子字符串
- 字符串插值在包含多个单词的字符串中不能正常工作
- 如何动态检查字符串是否包含多个匹配的子字符串
- JSON对多个对象求和,其中值包含一个字符串
- 如何检查字符串是否包含多维数组中的所有单词
- Regex,用于获取包含多个内部大括号的外部大括号中的字符串
- 包含多行字符串的无效或意外标记
- 如何将包含多个js语句的字符串拆分为一个字符串数组,每个字符串包含一个语句
- 如何检查字符串是否在不同位置包含多个单词