是否有一种方法来比较两个数组中的字符串,以查看其中一个是否存在于另一个数组中



我有两个数组

第一个:const triggerWord = ["what", "how", "where", "who", "can"];

第二个:const myArray = query.split(" ");—在分割用户输入后创建,在本例中称为query。

1是固定数量的字符串,不会改变,因为它们是触发词。另一个数组是一个输入字符串,它被分割成一个数组,中间用空格分隔。

我试图建立某种控制流,如果任何的triggerWords都存在于myArray中,那么它应该调用一个特定的函数调用questionFunction()。然而else是,它应该调用语句函数。以下是我尝试过的函数:

#1: Switch Case:

switch (lowercaseMyArray.includes()) {
case triggerWord[0].toString():
questionFunction(lowercaseMyArray);
break;
case triggerWord[1].toString():
questionFunction(lowercaseMyArray);
break;
case triggerWord[2].toString():
questionFunction(lowercaseMyArray);
break;
case triggerWord[3].toString():
questionFunction(lowercaseMyArray);
break;
default:
statementFunction(lowercaseMyArray);

#2: If语句

if (lowercaseMyArray.includes(triggerWord[0] || triggerWord[1] || triggerWord[2] || triggerWord[3], 2)) {
//alert("This is a question");
questionFunction(lowercaseMyArray);
//passe onto questionFunction
} else {
statementFunction(lowercaseMyArray);
//alert(myArray);
}

#3: Bool and If语句

var lowercaseMyArrayBool = lowercaseMyArray.includes(triggerWord);
if (lowercaseMyArrayBool === true) {
questionFunction(lowercaseMyArray);
} else {
statementFunction(lowercaseMyArray);
}

的想法是,如果它包含一个触发词,那么输入必须是一个问题,因此被视为这样。但是,如果它不包含触发词,则输入是一个语句,必须按此处理。

任何帮助或指点将不胜感激。

使用以下代码解决此问题:

const intersection = triggerWord.filter(element => lowercaseMyArray.includes(element)).length;
const intersectionBool = Boolean(intersection);

我只需要将过滤后的数组长度转换为布尔值,以获得准确的true或false结果。

相关内容

  • 没有找到相关文章