Привет я задавался вопросом, мог ли кто-либо дать некоторый совет на самом быстром / самый эффективный путь к compre два массива строк в JavaScript.
Я разрабатываю своего рода вещь типа облака тегов на основе пользовательского входа - вход, находящийся в форме записанная часть текста, такого как статья блога или подобные.
У меня поэтому есть массив, который я сохраняю слов для не включения - a, и т.д. и т.д.
В данный момент я делаю следующее:
Удалите всю пунктуацию из входной строки, маркируйте ее, сравните каждое слово с исключить массивом и затем удалите любые дубликаты.
Сравнения формуются цикличным выполнением по каждому объекту в исключить массиве для каждого слова во входном тексте - это кажется видом грубой силы и разрушает Internet Explorer на массивах больше чем нескольких сотен слов.
я должен также упомянуть, что мой исключать список имеет приблизительно 300 объектов.
Любая справка действительно ценилась бы.
Спасибо
Я не уверен в подходе в целом, но вместо того, чтобы строить огромный массив, а затем повторять его, почему бы не поместить «ключи» в объект 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']
Было бы стоит попробовать объединить слова в одно регулярное выражение, а затем сравнить с этим. Оптимизация механизма регулярных выражений может позволить поиску пропускать вперед поисковый текст намного эффективнее, чем вы могли бы сделать, перебирая отдельные строки.
Вы можете использовать хеш-функцию для строк (я не знаю, есть ли она в JS, но я уверен, что дядя Google может помочь;]). Затем вы должны вычислить хэши для всех слов в вашем списке исключения и создать массив логических значений, проиндексированных этими хешами. Затем просто выполните итерацию по тексту и сравните хэши слов с этим массивом.