Соответствие текста и массива javascript

У меня есть текст и массив тегов. Я ищу способ узнать, содержит ли текст какое-либо слово-триггер в массиве. Если да, напишите кодовое слово тега (второй параметр в массиве).

Есть ли лучший способ сделать это?

var textim = "I need to eat an apple and banna and meat";
 
var tags = [
            ["apple","fruit"],
            ["meat","other"],
            ["orange","fruit"],
            ["banna","fruit"],
            
            
            ];

tags.forEach(function(entry) {

  if (textim.includes(entry[0])){
    console.info(entry[1]);
  };

});

Предлагаю вам задать этот вопрос на сайте CodeReview - codereview.stackexchange.com

Rahul Desai 01.05.2018 20:41

Мне нравится. Почему ты спросил?

Ben West 01.05.2018 20:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Преобразуйте массив tags в карта. Расколотьtextim пробелом и повторяет слова с Array.forEach(). Если в tagsMap есть слово, получите значение слова, а в console.info() его:

const textim = "I need to eat an apple and banna and meat";

const tags = [
  ["apple", "fruit"],
  ["meat", "other"],
  ["orange", "fruit"],
  ["banna", "fruit"],
];

const tagsMap = new Map(tags);

textim.split(' ')
  .forEach((word) => {
    if (tagsMap.has(word)) console.info(tagsMap.get(word));
  });

Всегда выполняйте итерацию по вводу (textim) и проверяйте / сравнивайте в ссылочном стеке, но никогда не перебирайте массив / стек ссылок (тегов) и проверяйте ввод, иначе вы в конечном итоге выполните итерацию накладных расходов.

Пример: с вашим текущим исправлением, если у вас есть массив тегов из 100 элементов 1) для вводимого текста из 5 слов - будет повторяться 100 раз. 2) для вводимого текста с 2-мя словами - будет повторяться 100 раз.

textim похож на 1000 слов, а тег был на 500

boaz 01.05.2018 21:13

Другие вопросы по теме