Дано:
- Две строки Sone, Stwo типа String;
Найти:
- Слова, которые встречаются в обеих строках.
- Вывести на экран эти слова.
<script> var Sone = "Это тестовый пример для поиска одинаковых слов в предложениях.
Он больше подходит для словарей и поиска слов в именительном падеже, такие как - массив,
носорог, яваскрипт, код, он", Stwo = "Сперва для этого сделаем массив. И данный код будет разбивать на слова и предлоги
в предложениях и заносить результаты в данный массив. ", Smarks = ",.!?-;<>[]()@#$%^&* "; //Создаем строку, необходимую для поиска знаков
//препинания и символов, не относящихся к словам var ArrayWords = []; //Создаем массив для того, чтобы заносить в него слова var tempString = ""; //Строка, необходимая для хранения слова из строки var counterWord = 0; //Счетчик массива ArrayWords //Для начала проанализируем нашу строку "Sone" и разобьем ее на слова. for (var i = 0; i < Sone.length; i++) { if (Smarks.indexOf(Sone[i])==-1) { tempString += Sone[i]; } else { if (tempString != '') {ArrayWords[counterWord] = tempString; counterWord++; } tempString = ""; } } //Следующим шагом будет написание функции, для удаления одинаковых слов в массиве. //Не пугайтесь. Не будет огромных циклов, всё сделаем внутреннеми средствами JS function uniqueWordsFromArray(value, index, self) { return self.indexOf(value) === index; } //Вот и всё. Функция готова. Сама функция onlyUnique проверяет данные массива. //Если данное значение является первым - возвращаем true. Если нет, то он должен быть дубликатом
//и возвращаем false и не копируем его. // Далее вводим новую переменную unique куда и будем заносить отсортированные слова из массива
//ArrayWords // Используяметод filter. var uniqueWords = ArrayWords.filter( uniqueWordsFromArray ); // Это решение работает без каких-либо дополнительных библиотек, как JQuery или prototype.js. // Функция работает и для массивов со смешанными типами данных // А теперь, используя наш псевдословарь, сделанный из слов первой строки, найдем совпадения и
//выведем их на экран for (var i = 0; i < uniqueWords.length; i++) { if (Stwo.indexOf(uniqueWords[i])!=-1) { document.write(uniqueWords[i]+"<br/>"); } } </script>
Теперь можно переводить данный скрипт в функцию и использовать ее как матфильтр или для реализации поиска на сайте.
<script> function SearchUniqueWords(Sone,Stwo) { var Smarks = ",.!?-;<>[]()@#$%^&* "; //Создаем строку, необходимую для поиска знаков
//препинания и символов, не относящихся к словам var ArrayWords = []; //Создаем массив для того, чтобы заносить в него слова var tempString = ""; //Строка, необходимая для хранения слова из строки var counterWord = 0; //Счетчикмассива ArrayWords var uniqueWords = []; for (var i = 0; i < Sone.length; i++) { if (Smarks.indexOf(Sone[i])==-1) { tempString += Sone[i]; } else { if (tempString != '') {ArrayWords[counterWord] = tempString; counterWord++; } tempString = ""; } } function uniqueWordsFromArray(value, index, self) { return self.indexOf(value) === index; } uniqueWords = ArrayWords.filter( uniqueWordsFromArray ); ArrayWords = []; for (var i = 0; i < uniqueWords.length; i++) { if (Stwo.indexOf(uniqueWords[i])!=-1) { ArrayWords.push(uniqueWords[i]); } } return ArrayWords; } var Soutone = "Это тестовый пример для поиска одинаковых слов в предложениях. Он больше подходит
для словарей и поиска слов в именительном падеже, такие как - массив, носорог, яваскрипт, код, он", Souttwo = "Сперва для этого сделаем массив. И данный код будет разбивать на слова и предлоги в
предложениях и заносить результаты в данный массив. "; var ArrayGlobal = SearchUniqueWords(Soutone,Souttwo); document.write(ArrayGlobal.join("<br />")); </script>