Поиск в массиве через JavaScript
Здраствуйте ! Я абсолютный новичок (ноль) в JavaScript. Мне нужно организовать поиск в массиве(вах) данных по словам. У меня есть скрипт, но он ищет только по первым словам в данных, чуствителен к регистру и не может найти и отобразить несколько результатов поиска по категориям. Категории описаны начиная с var iNumber = 1; Если кому-нибудь не сложно, поправьте скрипт или хотя бы подскажите что изменить чтобы реализовать: поиск и отображение нескольких результатов, поиск по любому слову и не чуствительность к регистру (не обязательно). Вот тот самый скрипт:
<script language="JavaScript"> <!-- function createArray(length) { this.length = length; for( var i = 1; i<= length; i++) this[i] = null; return this; } // ********************** Some Preparation Data ****************************************** var Entries = 5; // Количество записей в базе данных var Separator = ";" // Разделитель для элементов данных var Fields = 5; // Количество данных по одному письму var iNumber = 1; var iDate = 2; var iTitle = 3; var iSender = 4; var iTarget = 5; // *********************** Now create the Array ******************************************* var Data = new createArray(Entries); // *********************** Type in your Data below ***************************************** Data[1] = "1;09.06.2006;Ответы на вопросы для ОАО ПИ 'Синтез ПАВ';ОАО ПИ 'Синтез ПАВ';Мельник Г.В. Вамбольдт Ю.А."; Data[2] = ""; // Под Дата1 пример организации данных для поиска. В остальных блоках будут подобные данные. Data[3] = ""; Data[4] = ""; Data[5] = ""; // ********************** End of Data Block ********************************************** // ********************* Begin Common functions ***************************************** var LastMatch = 0; // Store Last Matched Data Index function GetField(Entry,number) // Count begins with 1, f.e. GetField(Data[1] ,1) returns Walkowiak { var Out = ""; var FirstChar; var LastChar; FirstChar = 0; LastChar = Entry.indexOf(Separator) ; if (number == 1) { Out += Entry.substring(FirstChar,LastChar); return Out; } if (number == Fields) { Out+= Entry.substring(Entry.lastIndexOf(Separator) + 1,Entry.length) return Out; } for(var i =2; i <= number; i++) { FirstChar = LastChar + 1; LastChar = Entry.indexOf(Separator, FirstChar); } Out += Entry.substring(FirstChar,LastChar); return Out; } function FindNext(String, number) // number is the number of the field to search in { var CompareWith = ""; for(var i = LastMatch + 1; i <=Data.length; i++) { var buf = GetField(Data[i],number); var bl = parseInt(buf.length); var sl = parseInt(String.length); if(bl > sl) { CompareWith = buf.substring(0,sl ); } else { CompareWith = buf; } if (CompareWith == String) { LastMatch = i; return i; } } LastMatch = 0; return 0; } // ******************************* Custom functions for this document******************************** function ResetSearch() { LastMatch = 0; for(var i = 1; i <=Fields; i++) { document.SearchForm.elements[i+3].value = ""; } } function TypeNext() { var SearchString = document.SearchForm.Text.value; var index =document.SearchForm.elements[3].options.selectedIndex + 1; var j = FindNext(SearchString, index); if (j == 0) { alert("Достигнут конец списка, элемент не обнаружен ! \nНажмите 'Сброс' чтобы запустить поиск с начала списка."); ResetSearch(); return; } var buf = ""; for(var i = 1; i <=Fields; i++) { buf = GetField(Data[j],i); document.SearchForm.elements[i+3].value = buf; } } // --> </script> P.s. Я не собираюсь извлекать из него коммерческую выгоду, только упростить жизнь людям в виде поиска по данным. |
Часовой пояс GMT +3, время: 09:09. |