如何检查字符串数组是否包含存储在另一个字符串数组中的部分单词?
假设我已经宣布了这三个数组:
array1 = ["Lorem", "ipsum", "dolor" "sit" "amet"]
array2 = ["Lorem", "ipsum"]
keywords = ["ipsum", "dol"]
将array1
与keywords
进行比较时,我希望获得类似true
的内容,因为"ipsum"
和"dol"
位于array1
,但{将false
与array2
进行比较时{1}},因为keywords
不在"dol"
我搜索了一个小时,但我不知道怎么做...我成功地将数组与一个关键字进行比较,但没有多个关键字。
答案 0 :(得分:4)
.every()
).some()
).includes()
)<强>演示:强>
let array1 = ["Lorem", "ipsum", "dolor", "sit", "amet"],
array2 = ["Lorem", "ipsum"],
keywords = ["ipsum", "dol"];
let compare = (a, k) => k.every(s => a.some(v => v.includes(s)));
console.log(compare(array1, keywords));
console.log(compare(array2, keywords));
<强>文档:强>
答案 1 :(得分:3)
您可以使用Array.every
let contains = keywords.every(k => array1.findIndex(a => a.indexOf(k) > -1) > -1)
答案 2 :(得分:0)
function arrayContains(array1,array2){
var res=0;
for (var i=0;i<array1.length;i++){
for (var j=0;i<array2.length;j++){
if (array1[i]==array2[j])
res++
}
}
return res==array2.length//if res is eqaul to array2.length then all elements of array2 are inside array1;
}
答案 3 :(得分:0)
我会使用indexOf
代替includes
,因为includes
在IE浏览器中不起作用。 Browser compatibility
let array1 = ["Lorem", "ipsum", "dolor", "sit", "amet"],
array2 = ["Lorem", "ipsum"],
keywords = ["ipsum", "dol"];
let compare = (a, k) => k.every(s => a.some(v => v.indexOf(s) !== -1));
console.log(compare(array1, keywords));
console.log(compare(array2, keywords));
答案 4 :(得分:-1)
var array1 = ['a','b','c'];
var array2 = ['g','f','h'];
var keys = ['a','g'];
function checkIfExists(key, arr) {
if (arr.indexOf(key) != -1) {
console.log('Key ' + key + ' exists in array');
} else {
console.log('Key ' + key + ' does not exists in array');
}
}
for (var i = 0; i < keys.length; i++) {
checkIfExists(keys[i], array1);
}
for (var i = 0; i < keys.length; i++) {
checkIfExists(keys[i], array2);
}
输出:
键a存在于数组中 密钥g在数组中不存在 键a不存在于数组中 密钥g存在于数组
中