首页 > 解决方案 > 多个元素的 indexOf() 方法的替代方法

问题描述

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

标签: javascriptoperatorsmatchindexof

解决方案


您可以使用数组并检查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(根据字符串是否通过测试返回真或假)可能比str.match(<regex>)(返回匹配对象)更合适


推荐阅读