Я пытаюсь выполнить поиск по словарю для некоторого контента, и мой подход пока что я могу искать только отдельные слова, потому что я использую метод split (''), разделяющий только пространство. Я только что наткнулся на засор Сорта, и мне было интересно, ребята, у вас есть какой-нибудь весомый вклад. например, если в моем словаре есть ключи, состоящие из двух слов. Как ниже
var dictionary = { "Darth Vader" : "Bad Ass Father", "Luke": "Son of the Bad Ass",
"Skywalker" : "Last name of some Jedi Knights", "Luke SkyWalker" : "Son of the Bad Ass"}
это код, который я получил до сих пор, и он работает, очевидно, для отдельных слов, но не для нескольких ключевых слов. getElementsByClassName - это функция, которая возвращает массив всех найденных классов.
var body = '<div class="activity-inner"> This is a test glossary body paragraph to test glossary highlight of the Star Wars vocabulary. like Luke Skywalker and Darth Vader, Luke and Skywalker. </div> <div class="activity-inner">Hello glossary again here Luke Skywalker Darth Vader</div>';
document.write( body);
var matches = getElementsByClassName("activity-inner");
for (int i = 0; i < matches.length; i++;) {
var content = matches[i].innerHTML;
document.write(content);
var words = content.split(' ');
for (var j = 0; j < words.length; j++) {
var temp = words[j].replace(/[^\w\s]|_/g, "")
.replace(/\s+/g, " ").toLowerCase();
if (temp in dictionary) {
words[j] = "<span class='highlight' style='color:green;'>"+words[j]+"</span>";
}
document.write(words[j] +"<br />");
}
body = words.join(' ');
document.write( "<br /> <br />" + body);
}
Приведенный выше пример не сработает. Однако некоторые вещи в моем словаре будут такими. Как я должен идти об этом и, возможно, избежать дела, если это вообще возможно? Спасибо!