Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.10.2012, 18:18
Новичок на форуме
Отправить личное сообщение для [PC]Contra Посмотреть профиль Найти все сообщения от [PC]Contra
 
Регистрация: 24.10.2012
Сообщений: 3

Функция поиска на JS
<div><input id="find" type="text"/></div>

//Искалка:
        $('#find').live('click', function(){
            $.get("showEstimate",function(e){
                $('#find').keyup(function(){
                    searchText = $('#find').val().toLowerCase();
                    searchWord = searchText.toLowerCase().split(' ');
                    for(var i = 0; i < e.length; i++){
                        e[i].rating = 0;
                       
                        for(var j = 0; j < searchWord.length; j++){
                            if(searchWord[j].length > 2){
                                //                        console.log(searchWord.length + '->' + searchWord[j].length);
                                var ename = e[i].ename.toLowerCase();
                                if(ename.indexOf(searchWord[j]) > -1){
                                    //                                console.log(ename + '->' + searchWord[j] + '->' + ename.indexOf(searchWord[j]));
                                   
                                    e[i].rating ++;
                                   
                                }
                            }
                           
                        }
                        //                    console.log(e[i].rating);
                    }
                   
                    Array.prototype.sort.call(e, function(a, b) {
                        return a['rating'] > b['rating'] ? -1 : a['rating'] < b['rating'] ? 1 : 0;
                    });
                    for(i = 0; i < e.length; i ++){
                        if(e[i].rating > 0){
                            printEstimate(e, 3);
    //                        console.log(JSON.stringify(e[i]));
                        }
                    }
                   
                });
               
            }, 'json');
        });

Суть такая: при клике в поле поиска подгружается - $.get массив данных (название, номер). При вводе каждой буквы срабатывает ф-ция .keyup. Введенный текст searchText переводится в нижний регистр, дробится на слова searchWord.
Далее для каждой строчки массива данных (где мы ищем) прогоняется цикл, проверяющий на вхождение каждого из введенных слов на наличие в строчке массива. Если есть совпадение , то rating повышается. Ну а далее выводится по рейтингу, те строчки, где больше совпадений.
Внимание, вопрос: Работать то работает, но тормозит: при обработке массива из двух тысяч строк и двух введенных слов у мозилы занимает 15 сек. Как исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 24.10.2012, 20:33
Новичок на форуме
Отправить личное сообщение для [PC]Contra Посмотреть профиль Найти все сообщения от [PC]Contra
 
Регистрация: 24.10.2012
Сообщений: 3

Так в чем фишка то?
Ответить с цитированием
  #3 (permalink)  
Старый 24.10.2012, 21:00
Новичок на форуме
Отправить личное сообщение для [PC]Contra Посмотреть профиль Найти все сообщения от [PC]Contra
 
Регистрация: 24.10.2012
Сообщений: 3

Я понял ты там добавляешь индексацию...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP ФУНКЦИЯ В JS Облом Общие вопросы Javascript 1 08.08.2011 00:41
помогите со js скриптом поиска по текстовой базе MorganStels Ваши сайты и скрипты 4 15.06.2010 10:03
JS функция не возращает параметр .. Arfey Общие вопросы Javascript 2 10.06.2010 13:19
Не вызывается функция из внешнего js Danie Ваши сайты и скрипты 6 14.10.2009 11:19
js поиска на странице ovetskiy Я не знаю javascript 2 10.06.2009 10:12