indexOf 函数中的选项之间的选择

Choice between options in indexOf function

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

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

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

var str="my profile in facebook"; if (str.indexOf("twitter")!=-1 || str.indexOf("youtube")!=-1 || str.indexOf("facebook")!=-1){ //codes goes here }

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

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
 }

编辑:关于你的问题for less code, with ES6, you can do:

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

这样试试...

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

如果我正确理解了您要查找的内容,解决方案可以是:

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