Альтернатива метода indexOf () для нескольких элементов - PullRequest
0 голосов
/ 04 сентября 2018

Каков альтернативный метод indexOf () для нескольких элементов и при использовании с оператором && , а не с || Оператор .

Пример:

var fruit = 'banana,lemon,mango,apple';
if ( fruit.indexOf('banana') > -1 && fruit.indexOf('lemon') > -1 && fruit.indexOf('mango') > -1 ) {
   alert('found');
}

С || (ИЛИ) Оператор Я нашел это решение: fruit.match(/(banana|lemon|mango)/)

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете использовать массив и проверить, прошел ли тест элемент every массива:

var fruit = 'banana,lemon,mango,apple';
console.log(
  ['banana', 'lemon', 'mango', 'apple'].every(str => fruit.includes(str))
);

Для решения с использованием регулярных выражений вы можете использовать несколько запросов:

var fruit = 'banana,lemon,mango,apple';
console.log(
  /^(?=.*banana)(?=.*lemon)(?=.*mango)(?=.*apple)/.test(fruit)
);
console.log(
  /^(?=.*FruitThatDoesntExist)(?=.*lemon)(?=.*mango)(?=.*apple)/.test(fruit)
);

Обратите внимание, что <regex>.test (возвращает true или false, в зависимости от того, прошла ли строка тест) может быть немного более подходящим, чем str.match(<regex>) (который возвращает объект сопоставления )

...