替代indexOf()方法的多个元素

问题描述 投票:1回答:1

什么是多个元素的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)/)

javascript operators match indexof
1个回答
1
投票

您可以使用数组并检查数组的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>)(返回匹配对象)更合适

© www.soinside.com 2019 - 2024. All rights reserved.