indexOf多个参数

时间:2016-08-23 10:56:27

标签: jquery

var pathname = window.location.pathname;
if (! (pathname.indexOf('edit') > -1) ) {
  // Do stuff...
}

在上面的示例中,我否定并且仅在不包含“edit”的页面上运行JS,我想将其更改为接受多个参数,例如“edit”,“delete”,“admin”, “设置”。

这是最好的方法吗?

4 个答案:

答案 0 :(得分:3)

var pathname = window.location.pathname;

if (["edit", "delete", "admin"].some(x => pathname.indexOf(x) > -1)) {
    // ...
}

没有旧浏览器的箭头功能

var pathname = window.location.pathname,
    isSpecialPath = ["edit", "delete", "admin"].some(function(x) { return pathname.indexOf(x) > -1; });

if (isSpecialPath) {
    // ...
}

Array.prototype.some() some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

答案 1 :(得分:1)

你可以制作一个循环,看看是否找到了什么,然后做你想做的事。

var pathname = window.location.pathname;
var names = ["edit", "delete", "admin", "settings"];
var found = false;

for( var i = 0; i < names.length; i++ ) {
    if( pathname.indexOf(names[i]) > -1 ) {
        found = true;
        break;
    }
}

if( !found ) {
    // do stuff
}

答案 2 :(得分:0)

您可以使用正则表达式来测试多个值,例如:

var pathname = window.location.pathname;

var textToSearchFor = /(edit)|(delete)|(ADDMORE)/;

if (path.match(textToSearchFor) == null) {
  //Entered Text not available
  //alert("Not available");
}
else {
   //Entered Text available
   //alert("Available");
}

参考:How to search for multiple texts in a string, using java script?

答案 3 :(得分:0)

你可以试试这个:

&#13;
&#13;
var pathname = window.location.pathname;
if((/edit|delete|admin|settings/i).test(pathname))
{
    console.log("exists");
}
else
{
    console.log("not exists");
}
&#13;
&#13;
&#13;