比较子字符串

时间:2018-04-30 13:32:17

标签: javascript arrays string

如何检查字符串数组是否包含存储在另一个字符串数组中的部分单词?

假设我已经宣布了这三个数组:

array1 = ["Lorem", "ipsum", "dolor" "sit" "amet"]

array2 = ["Lorem", "ipsum"]

keywords = ["ipsum", "dol"]

array1keywords进行比较时,我希望获得类似true的内容,因为"ipsum""dol"位于array1,但{将falsearray2进行比较时{1}},因为keywords不在"dol"

我搜索了一个小时,但我不知道怎么做...我成功地将数组与一个关键字进行比较,但没有多个关键字。

5 个答案:

答案 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存在于数组