我想检查一个字符串是否包含以下任何单词,苹果,梨,橙色,如果有,请执行一些代码。但是,我的代码目前仅检查第一个单词,apple,而不检查其他两个单词。Fruit变量从客户端发送。
var fruit = fruit;
if (fruit.includes(["apple", "pear", "orange"])
{
//do some code
}
我尝试过|而不是逗号
我需要它,所以它检查所有单词,而不仅仅是第一个单词
答案 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
}
});