javascript函数始终返回第一个元素
我有下面的javascript函数来检查链接,基于链接是一个曲目或相册,它应该从链接中提取id,但它永远不会通过第一个if语句,它将始终提醒在链接中找到的曲目,即使我提供了相册链接,任何帮助都将不胜感激。 链接如下所示:javascript函数始终返回第一个元素,javascript,jquery,if-statement,conditional-statements,Javascript,Jquery,If Statement,Conditional Statements,我有下面的javascript函数来检查链接,基于链接是一个曲目或相册,它应该从链接中提取id,但它永远不会通过第一个if语句,它将始终提醒在链接中找到的曲目,即使我提供了相册链接,任何帮助都将不胜感激。 链接如下所示: https://open.spotify.com/album/1XGo0OD90wIlRccwLe29L9?si=egthfx9CRfuPIhLJ1uXCPA https://open.spotify.com/track/1SWyGZhn3nyLUZRfWvQ0to?si=Tl
https://open.spotify.com/album/1XGo0OD90wIlRccwLe29L9?si=egthfx9CRfuPIhLJ1uXCPA
https://open.spotify.com/track/1SWyGZhn3nyLUZRfWvQ0to?si=Tl-fwsqxQf-J8gZWps2PqQ
function getLinkID(link) {
if(link.indexOf("spotify")) {
if(link.indexOf("track")) {
alert("found track in link");
var linkID = link.split('track/').pop().split('?')[0];
} else if(link.indexOf("album")) {
alert("found album in link");
var linkID = link.split('album/').pop().split('?')[0];
}
} else if(link.indexOf("apple")) {
}
return linkID;
}
indexOf
返回匹配项的索引号,如果没有匹配项,则返回-1
。此外,如果在第一个
索引中有匹配项,则它将返回0
,这将破坏您的代码。您应该使用包含
更新自
link.indexOf("spotify")
到
注意,
includes
在使用IE时不起作用。对于IE,您需要创建一个polyfill或将条件更新为link.indexOf(“spotify”)!=-1
indexOf
返回匹配的索引号,如果不匹配,则返回-1
。此外,如果在第一个
索引中有匹配项,则它将返回0
,这将破坏您的代码。您应该使用包含
更新自
link.indexOf("spotify")
到
注意,
includes
在使用IE时不起作用。对于IE,您需要创建一个polyfill或将条件更新为link.indexOf(“spotify”)!=-1
如果未找到IndexOf,则返回-1,并且-1是真值。因此,它将始终返回true。如果找不到,IndexOf将返回-1,并且-1是真值。因此,它将始终返回真值
函数始终返回第一个元素
这里的问题是第一个条件总是true
,只有当索引是0
,即使单词没有出现在链接中,因为link.indexOf(“spotify”)
将返回索引或-1
因此,当找不到单词时,它将返回-1
,这是一个truthy
值,这就是为什么条件为true
,您可以通过在控制台中键入布尔(-1)
来确认这一点
您需要检查返回的索引是否高于-1
,以便正确评估条件:
if(link.indexOf("spotify")>-1)
函数始终返回第一个元素
这里的问题是第一个条件总是true
,只有当索引是0
,即使单词没有出现在链接中,因为link.indexOf(“spotify”)
将返回索引或-1
因此,当找不到单词时,它将返回-1
,这是一个truthy
值,这就是为什么条件为true
,您可以通过在控制台中键入布尔(-1)
来确认这一点
您需要检查返回的索引是否高于-1
,以便正确评估条件:
if(link.indexOf("spotify")>-1)
试试这个:)
试试这个:)
.indexOf
如果(~link.indexOf(“spotify”))
只是扩展Jaromanda X的注释,当它找不到什么东西时返回-1
,这是“truthy”-最快(但不明显)的修复如果(~link.indexOf(“spotify”)
,-1在js~link中是真的。当indexOf
是-1并且是负数(truthy)时,indexOf
是0(假的)否则-尽管link.indexOf(“spotify”)>=0或link.indexOf(“spotify”)>-1或link.indexOf(“spotify”)!=-1
是处理此代码的常用方法。indexOf
在找不到任何东西时返回-1
,这是“真实的”-最快(但不明显)的修复如果(~link.indexOf(“spotify”)
只是在Jaromanda X的注释上展开,-1在js~link中是真实的。indexOf
是0(错误)当indexOf
为-1且为负数(truthy)时,否则-尽管link.indexOf(“spotify”)>=0
或link.indexOf(“spotify”)>-1
或link.indexOf(“spotify”)!=-1
处理此代码的常用方法是“在internet explorer中不起作用”caveat@JaromandaX-同意,谢谢。已更新。通常为“在internet explorer中不起作用”caveat@JaromandaX-同意,谢谢。已更新。如果indexOf返回0,则不更新。。。但是…如果indexOf返回0,则不是。。。但是