Как найти ключевые слова в массивах скриптов, используя Javascript, надеюсь, на стороне клиента - PullRequest
1 голос
/ 05 августа 2020

Я столкнулся с этой проблемой и не знаю, как ее решить. У меня есть массив ключевых слов, например:

keywordArray = ["Javascript", "Python", "R", "Data Science", "Front-end", "Amazon Web Services", "Amazon DynamoDB"]

Теперь мне нужно найти только одно вхождение в массиве строк и вернуть это вхождение. Например:

stringArray = ["I love learning JavaScript but I would also like to learn Data Science using R", "I don't buy at Amazon", "RnB Music"]

В этом примере мне нужно вернуть массив, содержащий Javascript, Data Science и R. Если я удалю первую строку из stringArray, она не должна возвращать R (я думаю, что ее можно найти в «RnB Musi c»).

Я хотел бы сделать это на на стороне клиента, но я пробовал indexOf(), contains(), et c., но он не работает должным образом.

Итак, могу ли я сделать это на стороне клиента? если да, то как я могу это сделать? Если нет, то можно ли это сделать на NodeJS? Должен ли я использовать для этого облачный сервис?

В настоящее время я использую Angular, Express, NodeJS и MongoDB Atlas, который имеет службу полнотекстового поиска и работает неплохо. Я могу попробовать сделать это там, но не знаю, рентабельно ли это.

1 Ответ

3 голосов
/ 05 августа 2020

Итак, у вас есть первый массив:

const keywordArray = ["JavaScript", "Python", " R", "Data Science", "Front-end", "Amazon Web Services", "Amazon DynamoDB"]; 

, а второй - список строк

const stringArray = ["I love learning JavaScript but I would also like to learn Data Science using R", "I don't buy at Amazon", "RnB Music"];

Итак, вам нужно перебрать оба массива и проверить includes() метод.

Вот так:

const keywordArray = ["JavaScript", "Python", " R", "Data Science", "Front-end", "Amazon Web Services", "Amazon DynamoDB"];
    
    const stringArray = ["I love learning JavaScript but I would also like to learn Data Science using R", "I don't buy at Amazon", "RnB Music"];
    
    const result_array = [];
    
    for (let i = 0; i < stringArray.length; i++)
    {
      for (let d = 0; d < keywordArray.length; d++)
      {
          if (stringArray[i].includes(keywordArray[d]))
          {
            result_array.push(keywordArray[d]);
          }
              
      }
    }
    
    console.log(result_array);
...