在具有多个值的字符串上使用Includes方法

时间:2019-07-13 16:45:37

标签: javascript string

我想检查一个字符串是否包含以下任何单词,苹果,梨,橙色,如果有,请执行一些代码。但是,我的代码目前仅检查第一个单词,apple,而不检查其他两个单词。Fruit变量从客户端发送。

var fruit = fruit;

if (fruit.includes(["apple", "pear", "orange"])
{ 
    //do some code
}

我尝试过|而不是逗号

我需要它,所以它检查所有单词,而不仅仅是第一个单词

4 个答案:

答案 0 :(得分:3)

您可以使用some方法:

if (["apple", "pear", "orange"].some(x => fruit.includes(x))) {
    // Do something...

答案 1 :(得分:1)

您可以在循环中使用正则表达式而不是includes()来解决它。

演示:

var fruit = "green dpear";

if (/\b(apple|pear|orange)\b/.test(fruit)) {
  console.log('match');
} else {
  console.log('not_match');
}

答案 2 :(得分:1)

.includes()返回一个布尔值(true / false),并且看来您希望实际返回的是匹配项。 .find()返回匹配项,但像.include()一样,它在第一个匹配项后停止,因此您需要遍历搜索键。

以下演示在待搜索的数组(.filter())中运行primary.filter()将返回当前值为true的值。通过在.includes()内的搜索数组(search)上运行.filter(),可以搜索数组primary的每个元素。

const primary = ['alpha', 'beta', 'gamma', 'delta', 'epsilon'];
const search = ['beta', 'delta', 'omega'];

const matches = (array1, array2) => array1.filter(word => array2.includes(word));

console.log(matches(primary, search));

答案 3 :(得分:0)

您可以使用forEach循环

const fruit = ['apple', 'orange'];

fruit.forEach( function(v, i) {
    if ( fruit[i].includes('orange') ) {
    // do you stuff
  }
});