Самый быстрый / самый эффективный способ сравнить два массива строк JavaScript

Привет я задавался вопросом, мог ли кто-либо дать некоторый совет на самом быстром / самый эффективный путь к compre два массива строк в JavaScript.

Я разрабатываю своего рода вещь типа облака тегов на основе пользовательского входа - вход, находящийся в форме записанная часть текста, такого как статья блога или подобные.

У меня поэтому есть массив, который я сохраняю слов для не включения - a, и т.д. и т.д.

В данный момент я делаю следующее:

Удалите всю пунктуацию из входной строки, маркируйте ее, сравните каждое слово с исключить массивом и затем удалите любые дубликаты.

Сравнения формуются цикличным выполнением по каждому объекту в исключить массиве для каждого слова во входном тексте - это кажется видом грубой силы и разрушает Internet Explorer на массивах больше чем нескольких сотен слов.

я должен также упомянуть, что мой исключать список имеет приблизительно 300 объектов.

Любая справка действительно ценилась бы.

Спасибо

5
задан scunliffe 21 February 2010 в 22:32
поделиться

3 ответа

Я не уверен в подходе в целом, но вместо того, чтобы строить огромный массив, а затем повторять его, почему бы не поместить «ключи» в объект map- «подобный» для облегчения сравнения?

например.

var excludes = {};//object
//set keys into the "map"
excludes['bad'] = true;
excludes['words'] = true;
excludes['exclude'] = true;
excludes['all'] = true;
excludes['these'] = true;

Затем, когда вы хотите сравнить ... просто сделайте

var wordsToTest = ['these','are','all','my','words','to','check','for'];
var checkWord;
for(var i=0;i<wordsToTest.length;i++){
  checkWord = wordsToTest[i];
  if(excludes[checkword]){
    //bad word, ignore...
  } else {
    //good word... do something with it
  }
}

разрешает эти слова через ['are', 'my', 'to', 'check', 'for']

5
ответ дан 14 December 2019 в 08:49
поделиться

Было бы стоит попробовать объединить слова в одно регулярное выражение, а затем сравнить с этим. Оптимизация механизма регулярных выражений может позволить поиску пропускать вперед поисковый текст намного эффективнее, чем вы могли бы сделать, перебирая отдельные строки.

2
ответ дан 14 December 2019 в 08:49
поделиться

Вы можете использовать хеш-функцию для строк (я не знаю, есть ли она в JS, но я уверен, что дядя Google может помочь;]). Затем вы должны вычислить хэши для всех слов в вашем списке исключения и создать массив логических значений, проиндексированных этими хешами. Затем просто выполните итерацию по тексту и сравните хэши слов с этим массивом.

0
ответ дан 14 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: