Сравнить массивы подстроки - PullRequest
0 голосов
/ 30 апреля 2018

Как я могу проверить, содержит ли массив строк часть слов, хранящихся в другом массиве строк?

Допустим, я объявил эти три массива:

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

array2 = ["Lorem", "ipsum"]

keywords = ["ipsum", "dol"]

При сравнении array1 с keywords я хочу получить что-то вроде true, потому что "ipsum" и "dol" находятся в array1, но false, при сравнении array2 с keywords потому что "dol" не в array2

Я искал час, но не знаю, как это сделать ... Мне удалось сравнить массивы с одним ключевым словом, но не с несколькими ключевыми словами.

Ответы [ 5 ]

0 голосов
/ 30 апреля 2018

Я бы использовал indexOf вместо includes, так как includes не работают в браузерах IE. Совместимость с браузерами

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));
0 голосов
/ 30 апреля 2018
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;
}
0 голосов
/ 30 апреля 2018

Вы можете использовать Array.every

let contains = keywords.every(k => array1.findIndex(a => a.indexOf(k) > -1) > -1)
0 голосов
/ 30 апреля 2018
  • Для каждого элемента в массиве ключевых слов (используйте .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));

Docs:

0 голосов
/ 30 апреля 2018
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);
}

Выход:

Ключ а существует в массиве Ключ g не существует в массиве Ключ а не существует в массиве Ключ g существует в массиве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...