在indexOf函数中的选项之间进行选择

时间:2018-10-19 08:14:57

标签: javascript arguments selection logical-operators indexof

我想在if结构的javascript“ indexOf ”函数中的不同选项之间进行选择。解决它的最好方法是什么? 此示例不起作用:

if( str.indexOf( "twitter" || "facebook" || "youtube")!=-1 ){  
//my code goes here
}

我们可以使用此代码来工作 但这并不理想...

  

var str =“我在Facebook上的个人资料”;   如果(str.indexOf(“ twitter”)!=-1 ||   str.indexOf(“ youtube”)!=-1 || str.indexOf(“ facebook”)!=-1){//代码继续   这里}

3 个答案:

答案 0 :(得分:0)

我建议为此使用一个函数。

function contains(str, substring) {
  return str.indexOf(substring) > -1;
}

if(contains(str, "twitter") || contains(str, "facebook") || contains(str, "youtube")) {
  // your code here
}

或者,如果您希望在编程时更加简洁,请使用以下代码:

function containsAny(str) {
  return Array.prototype.slice.call(arguments)
           .slice(1)
           .some(function(substring) {
             return str.indexOf(substring) > -1
            });
 }

 if(containsAny(str, "twitter", "facebook", "youtube")) {
   // your code here
 }

编辑:关于需要较少代码的问题,使用ES6,您可以执行以下操作:

const containsAny = (str, ...args) => [...args].slice(1).some(s => str.indexOf(s) > -1)

答案 1 :(得分:0)

如果我正确理解了您要寻找的内容,则可以采取以下解决方案:

if( str.indexOf( "twitter")!=-1 || str.indexOf( "facebook")!=-1 || str.indexOf( "youtube")!=-1 ){  
    //my code goes here
}

答案 2 :(得分:-1)

尝试这样...

var media = ["twitter", "facebook", "youtube"];
if(media.includes(str) {
//your code
}