如果Javascript与数组中的多个单词匹配,则选择该字符串

时间:2016-03-29 12:03:28

标签: javascript

我有一个字符串“这个字符串中有多个单词”,我有一个包含多个单词的数组[“There”,“string”,“multiple”]。我想将我的字符串与此数组匹配,如果数组中的所有单词都存在于字符串中,则它应返回true。如果数组中的任何一个单词不在字符串中,则应返回false。

 var str = "There are multiple words in this string";
 var arr = ["There", "string", "multiple"]

这应该返回true。

 var str = "There are multiple words in this string";
 var arr = ["There", "hello", "multiple"]

这应该返回false,因为字符串中不存在“hello”。

如何在纯JavaScript中有效地完成这项工作?

2 个答案:

答案 0 :(得分:2)

使用Array.prototype.every() method,如果所有元素都通过条件,则返回true:

var str = "There are multiple words in this string";
var arr = ["There", "string", "multiple"]
var arr2 = ["There", "hello", "multiple"]

var result = arr.every(function(word) {
    // indexOf(word) returns -1 if word is not found in string
    // or the value of the index where the word appears in string
    return  str.indexOf(word) > -1
})
console.log(result) // true

result = arr2.every(function(word) {
    return  str.indexOf(word) > -1
})
console.log(result) // false

请参阅this fiddle

答案 1 :(得分:1)

您可以使用Array.prototype.every()

执行此操作
var str = "There are multiple words in this string";
var arr = ["There", "string", "multiple"]
var res = arr.every(function(itm){
 return str.indexOf(itm) > -1;
});

console.log(res); //true 

但请注意indexOf()将进行通配符搜索,即

"Therearemultiplewordsinthisstring".indexOf("There")

还会返回-1以外的索引。它区分大小写。