Выбор между опциями в функции indexOf - PullRequest
0 голосов
/ 19 октября 2018

Я хочу иметь выбор между различными опциями в функции JavaScript " indexOf " в структуре if.Как лучше всего это решить ... Этот пример не работает:

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

Мы можем использовать эти коды для работы, но это не идеально ...

var str = "мой профиль в фейсбуке";if (str.indexOf ("twitter")! = - 1 || str.indexOf ("youtube")! = - 1 || str.indexOf ("facebook")! = - 1) {// коды идут здесь}

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Попробуй вот так ...

var media = ["twitter", "facebook", "youtube"];
if(media.includes(str) {
//your code
}
0 голосов
/ 19 октября 2018

Если я правильно понял, что вы ищете, решение может быть:

if( str.indexOf( "twitter")!=-1 || str.indexOf( "facebook")!=-1 || str.indexOf( "youtube")!=-1 ){  
    //my code goes here
}
0 голосов
/ 19 октября 2018

Я бы предложил использовать для этого функцию.

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)
...