通过纯javascript更好的方法来做到这一点

时间:2017-12-12 18:56:36

标签: javascript string url

if(window.location.href.indexOf("=38805") > -1
  || window.location.href.indexOf("=38807") > -1
  || window.location.href.indexOf("=38816") > -1
  || window.location.href.indexOf("=38815") > -1
  || window.location.href.indexOf("=38814") > -1
  || window.location.href.indexOf("=38813") > -1
  || window.location.href.indexOf("=38811") > -1

  ){

    do something

  }

基本上,我对包含这些字符串的页面使用单独的css。我可能超过50页。想知道是否有更清晰的方式来写这个。把它们放到一个数组中?

2 个答案:

答案 0 :(得分:3)

JS some function,就是这样的东西:

let options = ["=38805","=38807","=38816"]; //...and the others
let link = window.location.href;

if( options.some( option => link.includes(option))){
    console.log('yay! =)');
}

您实际上正在浏览您的选项数组,并询问有关数组中每个元素的问题:“您是否出现在我的网址上?”。

然后,只有当some数组中的一个或多个元素正在回答{{1}时,if方法才会返回true(在这种情况下,活动options语句)问你的true问题。

顺便说一下 - JS有另一种方法可以涵盖类似的思维方式。 the every metohd

这个方法,正如您可以通过其名称理解的那样,只有当数组中的所有元素回答includes时才会返回true。

答案 1 :(得分:0)

这样的事情如何清理一下:

const ids = [38805, 38807, 38811, 38813, 38814, 38815, 38816];

let windowHrefHasId = false;
for (let id of ids) {
    if (window.location.href.indexOf('=' + id.toString()) > -1) {
        windowHrefHasId = true;
        break;
    }
}

if (windowHrefHasId) {
    // do something
}