我有一个字符串“这个字符串中有多个单词”,我有一个包含多个单词的数组[“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中有效地完成这项工作?
答案 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
以外的索引。它区分大小写。