5

我正在检查字符串输入是否包含任何字符串数组。它通过了大多数测试,但没有通过下面的测试。

有人能把我的代码分解一下吗?为什么它不能正常工作?

功能检查输入(输入,单词){var arr=输入.toLowerCase().split(“”);变量i,j;var匹配=0;对于(i=0;i<arr.length;i++){对于(j=0;j<单词长度;j++){if(arr[i]==单词[j]){匹配++;}}}if(匹配>0){返回true;}其他{返回false;}};checkInput(“参观新地方很有趣。”,[“aces”]);//返回false//此测试传递的代码checkInput(“当然,”他用一种实际的语气说道,[“重要”,“肯定”]);//返回false;应该返回true;

感谢您抽出时间!

  • 1
    这不是案件问题 评论 2017年10月25日6:40
  • 为什么不使用正则表达式? 评论 2017年10月25日6:40
  • 有很多非正则表达式的简单方法可以做到这一点。if(words.some(word=>input.includes(word)){/*做一件事*/}第一场比赛结束后停止。
    – 用户1596138
    评论 2017年10月25日6:46

2个答案2

重置为默认值
13

您可以使用函数方法进行此操作。尝试Array.some。

const words=['matters','deficient'];const input='“当然,”他用一种实际的语气说道。';console.log(words.some(word=>input.includes(word));
  • 1
    这是区分大小写的。OP需要不区分大小写的解决方案。 评论 2017年10月25日6:54
  • 不区分大小写与这个问题无关。很明显,您需要降低字符串的大小写。不鼓励鞋面。
    – 用户1596138
    评论 2017年10月25日6:57
  • 真正的问题是“如何查看字符串是否包含字符串数组中的任何一个”,这是一个明显的重复,而不是一个普通的vamp Q。它将被关闭,我的答案将不复存在。我只是想OP看看有没有更好的方法哈哈
    – 用户1596138
    评论 2017年10月25日6:59
6

你可以使用数组#includes检查输入中是否存在单词,并将输入小写,然后使用数组#includes.

功能检查输入(输入,单词){return words.some(word=>input.toLowerCase().includes(word.toLowerCase()));}log(checkInput(“当然,”他用一种实际的语气说道。”,[“事项”、“肯定”]);

您可以创建正则表达式和使用指定区分大小写的标志

功能检查输入(输入,单词){return words.some(word=>new RegExp(word,“i”).test(input));}log(checkInput(“当然,”他用一种实际的语气说道。”,[“重要”、“肯定”]);

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.