如何知道字符串在Javascript中是否至少包含一个数组元素

如何知道字符串在Javascript中是否至少包含一个数组元素,javascript,arrays,logic,Javascript,Arrays,Logic,字符串为真,因为存在“全部”, 字符串2为true,因为存在“some”, 字符串3为假,因为不存在“全部”或“部分” 此代码将一个句子拆分为每个单词,并检查是否有任何单词与匹配集Array匹配。您可以使用string.includes()方法。但在这种情况下,字符串3仍然会返回真值,因为有些字符串在某些内容中。您可以创建一个helper函数来查看字符串是否在数组中: const theStringIsGood = theString.split(' ').some(word => the

字符串为真,因为存在“全部”, 字符串2为true,因为存在“some”, 字符串3为假,因为不存在“全部”或“部分”


此代码将一个句子拆分为每个单词,并检查是否有任何单词与匹配集Array匹配。

您可以使用string.includes()方法。但在这种情况下,字符串3仍然会返回真值,因为有些字符串在某些内容中。您可以创建一个helper函数来查看字符串是否在数组中:

const theStringIsGood = theString.split(' ').some(word => theArray.includes(word))

现在可以将数组和其中一个字符串传递给函数并对其进行测试

只需使用正则表达式即可:

function findString(arr, str) {
    let flag = false;
    let strArr = str.split(' ');
    arr.forEach(function(s) {
        strArr.forEach(function(s2) {
            if(s === s2) {
                flag = true;
            }
        });
    });
    return flag;
};
在regex\b中是单词边界

请注意,如果您自己拆分所有字符串并逐个检查,会占用大量内存,因为这是一个贪婪的解决方案。我使用javascript本机函数提供了这一点

片段:

让字符串='包含回答您问题所需的所有信息'
让字符串2='包含一些回答您问题所需的信息'
让字符串3='某人回答您的问题所需的信息'
让数组=['all','some','x','y','etc']
函数数组文本(str,words){
让regex=newregexp(“\\b(“+words.join(“|”)+”)\\b,“g”);
返回正则表达式测试(str);
}
log(ArrayInText(theString,theArray));
log(ArrayInText(theString2,theArray));
log(ArrayInText(theString3,theArray))
1)
isIncludeWord
——使用
split
includes
方法查找精确的单词匹配。
2)
isInclude
——使用
some
include
查找匹配包含项

让字符串=
“包括回答您问题所需的所有信息”;
让这个字符串2=
“包括某人回答你问题所需的一些信息”;
让字符串3=“某人回答您的问题所需的信息”;
让数组=[“全部”、“部分”、“x”、“y”、“等];
常量isIncludeWord=(str,arr)=>
str.split(“”)。reduce((包括,单词)=>include | | arr.includes(单词),false);
const isInclude=(str,arr)=>arr.some(item=>str.include(item));
log(包括单词(字符串,数组));
日志(包括单词(字符串2,数组));
日志(包括单词(字符串3,数组));
日志(包括(字符串、数组));
日志(包括(字符串2,数组));

控制台日志(包括(字符串3,数组))
但是
字符串3中有
部分
——为什么它会返回
false
?您是否可以提供更多关于如何定义“包含”的详细信息?正如上面提到的,从技术上讲,“某人”中有“一些”
function findString(arr, str) {
    let flag = false;
    let strArr = str.split(' ');
    arr.forEach(function(s) {
        strArr.forEach(function(s2) {
            if(s === s2) {
                flag = true;
            }
        });
    });
    return flag;
};
function ArrayInText(str, words) {
    let regex = new RegExp("\\b(" + words.join('|') + ")\\b", "g");
    return regex.test(str);
}